Lass uns zunächst die Klasse vereinfachen und all die noch unbekannten
Konzepte entfernen.
Übrig bleibt eine aufgeräumte Klasse mit zwei Attributen (name und
alter) sowie einer Methode bellen.
public class Hund {
// Attribute
String name;
int alter;
// Methoden
void bellen() {
System.out.println(name + " sagt: Wuff!");
}
public static void main(String[] args) {
Hund meinHund = new Hund();
meinHund.name = "Bello";
meinHund.bellen();
}
}
Wir können nun ein Objekt (Instanz) der Klasse Hund erzeugen.
Analog zur Vorgehensweise bei der Deklaration und Initialisierung von
Variablen, bsp. einer Ganzzahlt int x = 5, erzeugen wir eine Variable
meinHund.
Diese Variable meinHund hat als Datentyp die Klasse Hund und wir
initialisieren die Variable, indem wir ein neues Objekt der Klasse
erzeugen: new Hund().
public class Hund {
// Attribute
String name;
int alter;
// Methoden
void bellen() {
System.out.println(name + " sagt: Wuff!");
}
public static void main(String[] args) {
Hund meinHund = new Hund();
meinHund.name = "Bello";
meinHund.bellen();
}
}
Nun haben wir ein Objekt meinHund, das alle Eigenschaften der Klasse
Hund als Anlage in sich trägt. Allerdings fehlen noch konkrete Werte.
Diese weisen wir bsp. in Zeile 13 zu: Hier bekommt das Objekt meinHund
den spezifischen Namen "Bello" zugewiesen.
Spoiler: Dieser Zugriff wird in Zukunft so nicht mehr klappen. Wir
werden über sog. Setter oder gleich über Konstruktoren die Werte
zuweisen. Aber für den Augenblick klappt das auch so und es ist auch
kein Code, den der Java-Compiler ablehnt.
public class Hund {
// Attribute
String name;
int alter;
// Methoden
void bellen() {
System.out.println(name + " sagt: Wuff!");
}
public static void main(String[] args) {
Hund meinHund = new Hund();
meinHund.name = "Bello";
meinHund.bellen();
}
}
Nun, da wir ein Objekt der Klasse Hund mit richtigem, echten
Hundenamen haben, können wir die Klassenmethode bellen von unserem
Hund meinHund ausführen lassen. Weniger verdreht ausgedrückt lassen
wir unseren Hund bellen und es wird uns auch gleich mit geliefert, wie
der Hund denn heißt.
<wrap hi>Es geht hier wohlgemerkt nicht darum, wie der Variablenname
des erzeugten Objekts lautet. Es geht darum, wie der konkrete Name des
erzeugten Objekts meinHund lautet.</wrap>
public class Hund {
// Attribute
String name;
int alter;
// Methoden
void bellen() {
System.out.println(name + " sagt: Wuff!");
}
public static void main(String[] args) {
Hund meinHund = new Hund();
meinHund.name = "Bello";
meinHund.bellen();
}
}