update klassen und methoden
parent
9e02f2a64c
commit
3f7c67315f
|
@ -1,6 +1,7 @@
|
|||
## Klassen
|
||||
|
||||
- Definition einer Klasse
|
||||
|
||||
Klassen in Groovy werden ähnlich wie in Java definiert, jedoch mit einigen
|
||||
syntaktischen Erleichterungen
|
||||
|
||||
|
@ -13,8 +14,9 @@ Beispiel
|
|||
```
|
||||
|
||||
- Eigenschaften
|
||||
Eigenschaften können direkt als Felder definiert werden. Groovy
|
||||
generiert automatisch Getter- und Setter-Methoden (wie in Ruby)
|
||||
|
||||
Eigenschaften können direkt als Felder definiert werden. Groovy
|
||||
generiert automatisch Getter- und Setter-Methoden (wie in Ruby)
|
||||
|
||||
Beispiel
|
||||
```
|
||||
|
@ -26,6 +28,7 @@ println person.name
|
|||
//John
|
||||
```
|
||||
|
||||
|
||||
Getter und Setter können aber auch manuell überschrieben werden
|
||||
|
||||
Beispiel
|
||||
|
@ -60,9 +63,10 @@ static void(args) {
|
|||
}
|
||||
```
|
||||
|
||||
-Konstruktoren
|
||||
Groovy fügt automatisch einen Standardkonstruktor hinzu. Man kann auch
|
||||
benutzerdefinierte Konstruktoren definieren.
|
||||
- Konstruktoren
|
||||
|
||||
Groovy fügt automatisch einen Standardkonstruktor hinzu. Man kann auch
|
||||
benutzerdefinierte Konstruktoren definieren.
|
||||
```
|
||||
class Person {
|
||||
String name
|
||||
|
@ -75,8 +79,9 @@ class Person {
|
|||
}
|
||||
```
|
||||
|
||||
-Standardkonstruktor mit Map
|
||||
Groovy bietet eine spezielle Initialisierungsform mit einer Map an
|
||||
- Standardkonstruktor mit Map
|
||||
|
||||
Groovy bietet eine spezielle Initialisierungsform mit einer Map an
|
||||
```
|
||||
Person person = new Person(name: 'John', age: 30)
|
||||
```
|
||||
|
@ -84,6 +89,7 @@ class Person {
|
|||
## Methoden
|
||||
|
||||
- Definition einer Methode
|
||||
|
||||
Methoden werden ähnlich wie in Java definiert, können aber optional einen Rückgabetyp
|
||||
haben
|
||||
```
|
||||
|
@ -94,7 +100,9 @@ haben
|
|||
}
|
||||
```
|
||||
|
||||
In Groovy können Methoden direkt ohne Klasse und main-Methode definiert und aufgerufen werden.
|
||||
In Groovy können Methoden direkt ohne Klasse und main-Methode definiert und aufgerufen
|
||||
werden.
|
||||
|
||||
|
||||
Beispiel 1
|
||||
```
|
||||
|
@ -114,6 +122,7 @@ sum(5,2)
|
|||
```
|
||||
|
||||
- Instanzmethoden
|
||||
|
||||
Methoden können Instanzmethoden sein und auf Instanzvariablen zugreifen.
|
||||
```
|
||||
class Method {
|
||||
|
@ -146,8 +155,10 @@ class MathUtils {
|
|||
```
|
||||
|
||||
- Dynamische Methoden
|
||||
|
||||
Groovy erlaubt es, Methoden zur Laufzeit hinzuzufügen.
|
||||
In diesem Beispiel wird die Methode sayHello zur Klasse DynamicExample hinzugefügt, nachdem die Klasse bereits definiert wurde
|
||||
In diesem Beispiel wird die Methode sayHello zur Klasse DynamicExample hinzugefügt, nachdem
|
||||
die Klasse bereits definiert wurde
|
||||
|
||||
Beispiel
|
||||
```
|
||||
|
@ -161,7 +172,10 @@ example.sayHello()
|
|||
```
|
||||
|
||||
- Expando
|
||||
Ist eine spezielle Klassen in Groovy, die ermöglicht Objekten zur Laufzeit dynamisch Methoden und Eigenschaften hinzuzufügen. Dadurch ist die vorherige Deklaration der Felder in der Klasse nicht nötig
|
||||
|
||||
Ist eine spezielle Klassen in Groovy, die ermöglicht Objekten zur Laufzeit dynamisch
|
||||
Methoden und Eigenschaften hinzuzufügen. Dadurch ist die vorherige Deklaration der Felder
|
||||
in der Klasse nicht nötig
|
||||
|
||||
Beispiel
|
||||
```
|
||||
|
@ -179,6 +193,7 @@ expando.sayHello() // Ausgabe: Hello from Groovy
|
|||
```
|
||||
|
||||
- Default-Parameterwerte
|
||||
|
||||
Methodenparameter können Standdardwerte haben(wie in Ruby)
|
||||
|
||||
Beispiel 1
|
||||
|
@ -191,6 +206,7 @@ class Greeter {
|
|||
```
|
||||
|
||||
Ruft man die Methode ohne Parameter auf, werden die Default-Paramter eingesetzt
|
||||
|
||||
Beispiel 2
|
||||
```
|
||||
def sum(int a=10, int b=3) {
|
||||
|
@ -202,7 +218,10 @@ sum()
|
|||
|
||||
|
||||
- Closures
|
||||
Closures können auf Variablen aus ihrem umgebenden Gültigkeitsbereich zugreifen und diese „einfangen“. Dadurch können sie auf Werte zugreifen, die zum Zeitpunkt ihrer Erstellung existierten.
|
||||
|
||||
Closures können auf Variablen aus ihrem umgebenden Gültigkeitsbereich zugreifen und diese
|
||||
„einfangen“. Dadurch können sie auf Werte zugreifen, die zum Zeitpunkt ihrer Erstellung
|
||||
existierten.
|
||||
|
||||
1. Parameter
|
||||
```
|
||||
|
@ -251,8 +270,10 @@ println myList.collect { item -> item * 2 } // [2, 4, 6, 8, 10]
|
|||
```
|
||||
|
||||
- Methodenverkettung
|
||||
|
||||
Durch das Rückgeben von this kann man Methodenaufrufe verketten.
|
||||
|
||||
|
||||
Beispiel
|
||||
```
|
||||
class FluentPerson {
|
||||
|
@ -273,8 +294,11 @@ class FluentPerson {
|
|||
def person = new FluentPerson().setName("John").setAge(30)
|
||||
```
|
||||
|
||||
|
||||
- Mixin(Misching)
|
||||
Man kann Funktionalität zu Klassen hinzufügen, ohne Vererbung zu verwenden, indem man Mixins verwendet.
|
||||
|
||||
Man kann Funktionalität zu Klassen hinzufügen, ohne Vererbung zu verwenden, indem man
|
||||
Mixins verwendet.
|
||||
|
||||
Beispiel
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue