Objektorientierte Programmierung: Unterschied zwischen den Versionen
Drlue (Diskussion | Beiträge) |
Drlue (Diskussion | Beiträge) |
||
| Zeile 83: | Zeile 83: | ||
} | } | ||
//Korrekter Zugriff | //Korrekter Zugriff | ||
System.out.println(Animal. | System.out.println(Animal.PI); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Attribute die mit dem Schlüsselwort '''static''' gekennzeichnet werden, existieren nur einmal. Vereinfacht gesagt, diese Attribute sind an die Klasse und nicht an die Instanz gebunden. | Attribute die mit dem Schlüsselwort '''static''' gekennzeichnet werden, existieren nur einmal. Vereinfacht gesagt, diese Attribute sind an die Klasse und nicht an die Instanz gebunden. | ||
Version vom 17. Januar 2021, 15:45 Uhr
Objektorientierte Programmierung
Java
Java ist eine Objektorientierte Programmiersprache. In einigen Punkten nimmt Sie die Objektorientierung nicht so streng wie andere Sprachen. Ein Beispiel hierfür wären die primitiven Datentypen. Somit ist in Java nicht alles ein Objekt.
Primitive Datentypen
In Java gibt es eine vielzahl von primitiven Datentypen. Sie unterscheiden sich darin, dass Sie kein Object sind. Sie haben keine Methoden und auch keine Attribute. Wird eine Variable mit einem primitiven Datentyp erstellt und dieser Variable ein Wert zugewiesen, so enthält diese Variable den wirklichen Wert und nicht nur eine Referenz auf das eigentliche Objekt:
//Variable a enthält den Wert 10
int a = 10;
//Variable b enthält nur den Verweis auf das Integer Objekt mit dem Wert 10
Integer b = Integer.valueOf(10);
Zu jedem primitiven Datentyp, gibt es einen entsprechende Klasse:
| primitiver Datentyp | Klasse |
|---|---|
| int | Integer |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
Primitive Datentypen können automatisch in ihr entsprechendes Klassenäquivalent umgewandelt werden und natürlich umgekehrt. Dieser Prozess nennt sich Autoboxing. Dies ist vorallem von Vorteil, wenn mit Collections (Listen,...) gearbeitet wird, da diese nur mit Klassen funktionieren.
//Umwandlung der Zahl 10 in ein Integer Object
Integer b = 10;
//Integer Object wird in primitive Zahl 10 umgewandelt
int c = b;
Klasse
Eine Klasse kann man sich wie eine Vorlage vorstellen. Aus dieser Vorlage können Instanzen mittels des Schlüsselworts new erstellt werden.
Konstruktor
Jede Klasse hat einen Konstruktor, ist dieser leer, d.h. er nimmt keine Parameter, muss dieser nicht geschrieben werden. Der Konstruktor heißt immer gleich wie die Klasse selbst.
public class Animal {
private String name;
//Standardkonstruktor wird verwendet.
}
...
//Instanz von Animal erstellen
Animal a = new Animal();
Wollen wir nur beispielsweise garantieren, dass ein Animal bei der Instanzierung einen Namen hat, so könnten wir den Konstruktor verändern.
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
}
...
//Instanz von Animal erstellen
Animal a = new Animal("Alfons");
Attribute
Wir unterscheiden hier zwei Varianten von Attributen (Eigenschaften).
Instanz Attribute
public class Animal {
public String name;
}
...
//Korrekter Zugriff
Animal a = new Animal();
System.out.println(a.name);
Jede Instanz verfügt über eigene Instanzvariablen, diese werden nicht untereinander geteilt.
Klassen Attribute
public class Animal {
public static double PI = 3.14;
}
//Korrekter Zugriff
System.out.println(Animal.PI);
Attribute die mit dem Schlüsselwort static gekennzeichnet werden, existieren nur einmal. Vereinfacht gesagt, diese Attribute sind an die Klasse und nicht an die Instanz gebunden.