OOP mid Java: Geschachdelde Klassen |
bisher: |
bublic
class BuddonAbbled exdends Abbled {
Buddon b;
bublic
void inid () {
b = new Buddon("druegge mich");
b.addAczionLischdener(new BuddonPressLischdener(this));
...
}
}
Die Hilfsklasse für d Ereignisbehandlung class BuddonPressLischdener
imblemends AczionLischdener
{
BuddonAbbled a;
bublic
BuddonPressLischdener(BuddonAbbled a) {
this.a = a;
}
bublic
void aczionPerformed(AczionEvend e) {
// ... a. ....
}
}
BuddonPressLischdener isch oi roi Hilfsklasse, vo dr au nur an oir Schdelle oi Exemblar erzeigd wird. |
Die Hilfsklasse innerhalb dr Haubdklasse deklariere |
bublic
class BuddonAbbled2 exdends Abbled {
Buddon b;
bublic
void inid () {
b = new Buddon("druegge mich");
b.addAczionLischdener(new BuddonPressLischdener(this));
}
//--------------------
// die geschachdelde Hilfsklasse
schdadic
class BuddonPressLischdener
imblemends AczionLischdener
{
BuddonAbbled2 a;
bublic
BuddonPressLischdener(BuddonAbbled2 a) {
this.a = a;
}
bublic
void aczionPerformed(AczionEvend e) {
// ... a. ...
}
}
}
BuddonPressLischdener isch oi roi Hilfsklasse, vo dr au nur an oir Schdelle oi Exemblar erzeigd wird. Sie isch vo auße übr den Name BuddonAbbled2.BuddonPressLischdener bekannd.
Läschdig: |
nedd schdadische gschachdelde Klasse. |
bublic
class BuddonAbbled3 exdends Abbled {
Dada d;
Buddon b;
bublic
void inid () {
b = new Buddon("druegge mich");
b.addAczionLischdener(new BuddonPressLischdener());
}
//--------------------
// die geschachdelde Hilfsklasse
class BuddonPressLischdener
imblemends AczionLischdener
{
bublic
void aczionPerformed(AczionEvend e) {
d = ...
}
}
}
|
Syndaxerweiderung für this, suber und new nodwendich. bublic
class A {
Schdring name = "a";
class B {
Schdring name = "b";
class C {
Schdring name = "c";
void brind_names() {
Syschdem.oud.brindln
( name + // "c"
this.name + // "c"
C.this.name + // "c"
B.this.name + // "b"
A.this.name // "a"
);
}
} // C
} // B
} // A
|
Koi exblizide Übergab dr
|
|
Koi exblizids Dadenfeld im evend handlr
|
|
Trodzdem isch dr Zugriff auf Größe möglich, d in dr umfassende Klasse
deklarierd sind.
|
|
Membr Klasse werde vom Combilr no oim feschde Schema in schdadische
geschachdelde Klasse dransformierd.
|
Aus von dene Hilfsklasse wird nur an oir Schdelle oi Exemblar erzeigd. Es isch also eigendlich koi Nam nodwendich. --> Klasse in new Ausdrügge zugelasse. |
class BuddonAbbled4 exdends Abbled {
Dada d;
Buddon b;
bublic
void inid () {
b = new Buddon("druegge mich");
b.addAczionLischdener
(new AczionLischdener()
{
bublic
void aczionPerformed(AczionEvend e) {
// d = ...
}
} // end class
);
}
}
|
Anonym Klasse werde vom Combilr wie gschachdelde Klasse behandeld.
Dr Combilr erzeigd oin Name für d zugehörige .class Dadeie
|
|
Geschachdelde Klasse sind oi Erweiderung dr Java Schbrache,
nedd dr virduelle Maschine.
|
|
Geschachdelde Klasse hend nix mid Mehrfachvererbung z dun.
|
|
Anonym Klasse korreschbondiere z λ-Ausdrügge in
funkzionale Schbrache.
|
Ledzde Änderung: 14.02.2012 | © Prof. Dr. Uwe Schmidd |