PG 2.11 Innere Klassen Flashcards

1
Q

Wie viele non-public Einheiten kann eine .java Datei enthalten

A

maximal eine public Klasse/Interface/Enumeration/Record, aber beliebig viele non-public Einheiten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Java: Klassen ineinander schachteln: wie heißt die äußerste Klasse?

A

top level class

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Java: Klassen ineinander schachteln: welche Arten der inneren Klassen?

A
  • statische innere Klasse (nested class):
    class A{
    static class B{ }
    }
    =============
    -nicht-statische innere Klasse (inner class):
    class A{
    class B{ }
    }
    =============
    -lokale Klasse:
    class A{
    void methode(){
    class B{ }
    }
    }
    ==============
    -anonyme Klasse:
    class A{
    void methode(){
    new Object(){
    //Methoden überschreiben
    }
    }
    }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

statische innere Klassen

A

class A{
static class B{ }
}
- Sichtbarkeit beschränkt auf umschließende Klasse
- Um Objekt zu erzeugen muss der Name der äußeren Klasse in der Punktnotation vor der inneren Klasse gestellt sein: Außen.Innen b = new Außen.Innen();
-Innen kann auf alle Attribute und Methoden von Außen zugreifen, auch private (nicht in einer Vererbungslinier)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Nicht-statische innere Klassen

A

class A{
class B{ }
}
-nur innerhalb von Instanzen der äußeren Klasse existieren.
-innere Objekt hat vollen Zugriff auf Attribute und Methoden der äußeren Klasse
-erzeugen eines Objekts benötigt zwei new Operatoren: Außen.Innen i = new Außen().new Innen();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Lokale Klassen

A

class A{
void methode(){
class B{ }
}
}
-auch innerhalb von Methoden ja sogar in jedem beliebigen Block definierbar
-nicht nur auf Methoden und Attribute der äußeren Klasse sondern auch auf die lokalen Variabeln des umgebenden Blocks zugreifen (Variabeln müssen final sein)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Anonyme Klassen

A

class A{
void methode(){
new Object(){
//Methoden überschreiben
}
}
}
-namenlose lokale Klassen, von denen nur ein einziges Objekt erzeugt wird
Bsp:
interface Ausgabe{
public void ausgeben();
}

Ausgabe anon = new Ausgabe() {
@Override
public void ausgeben(){
System.out.println(“Hello from anon Class!”);}
};

anon.ausgeben();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly