Nov 17

Das mit this auf Variablen innerhalb der Klasse definiert wird, dürfte bereits bekannt sein, aber wie referenziert man auf die Oberklasse?

… ebenfalls mit this:

public class Abteilung {

private String name=”Finance”;

class Gruppe{

private String name=”Dunning”;

void getInfo(){

System.out.println(this.name); // Referenzierung auf Gruppe.name: Dunning
System.out.println(Abteilung.this.name); // Referenzierung auf name der Abteilung: Finance

System.out.println(this); // Ausgabe des Objektes der Klasse Abteilung.Gruppe: Abteilung$Gruppe@19821f
System.out.println(Abteilung.this); //Ausgabe des Objektes der Klasse Abteilung: Abteilung@addbf1

}

}

public static void main(String args [ ]){

Abteilung a = new Abteilung();
Gruppe b = a.new Gruppe();
b.getInfo();

}

}

Tagged with:
Nov 15

Da ja innere Klassen ein privater Teil der äußeren Klasse sind, können innere Klassen auch auf alle Variablen/Objekte  der äußeren Klasse (egal ob privat oder nicht) zugreifen:

public class Abteilung {

private String name=”Finance”;

class Gruppe{

void getAbteilung(){

System.out.println(name); // Zugriff auf private Variable der äußeren Klasse ist problemlos möglich

}

}
public static void main(String args [ ]){

Abteilung a = new Abteilung();
Gruppe b = a.new Gruppe();
b.getAbteilung();
// Zugriff auf Variable der äußeren durch Methode der inneren Klasse

}

}

Tagged with:
Nov 13

Die Instantiierung findet innerhalb der Klasse statt:

public class Abteilung {

class Gruppe{ . . . }

public static void main(String args [ ]){

Abteilung a = new Abteilung();
Gruppe b = a.new Gruppe();
//oder
Abteilung.Gruppe c =a.new Gruppe(); //oder
Abteilung.Gruppe d = new Abteilung().new Gruppe();

}

}

Es kann also keine Gruppe ohne eine  Abteilung angelegt werden. Alternativ kann die innere Klasse auch innerhalb einer Methode angelegt werden; aber aufgepasst: auf diese Klasse kann nur innerhalb der Methode zugegriffen werden:

public class Abteilung {

private String name=”Finance”;
void newInner(){

Gruppe g = new Gruppe(); // neue Gruppe innerhalb der Methode newInner
g.getAbteilung();

}

class Gruppe{

void getAbteilung(){
System.out.println(name);

}

}
public static void main(String args [ ]){

Abteilung a = new Abteilung();
a.newInner();
//Ausgabe: Finance
g.getAbteilung(); //CompilerFehler, auf die Instanz g kann nur innerhalb der Methode zugegriffen werden

}

}

Tagged with:
Nov 11

Die nächste Zeit kümmern wir uns um besondere Klassen; nämlich Klassen innerhalb von Klassen.

class Abteilung{

class Gruppe { … }


}

Die Klasse Gruppe wird also von der Klasse Abteilung umgeben und ist tendenziell für die lokale Verwendung in der umgebenden Klasse gedacht. Jede Abteilung hat in unserem Beispiel ihre eigenen Gruppen, die diese autonom verwaltet.

Bei der Compilierung javac Abteilung.java erhalten wir dann auch 2 class-Dateien: Abteilung$Gruppe.class und Abteilung.class.

Tagged with:
preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs