private |
Variablen und Methoden einer Klasse sind nur innerhalb der
Klasse selbst sichtbar.
|
| |
|
diese Komponenten können verändert werden, ohne
dass Unterklassen davon beeinflusst werden.
Sicherheit, Modularität
|
| |
|
abgeleitete Klassen können die Information aus den
private-Komponenten
ihrer Basisklassen nicht zur Implementierung ihrer
eigenen Operationen ausnutzen.
Effizienzverlust möglich
|
| |
protected |
Variablen und Methoden einer Klasse sind innerhalb der
Klasse selbst und in Unterklassen sichtbar.
Außerdem sind diese Größen im zur Klasse gehörigen Paket
sichtbar.
|
| |
|
Wenn diese Komponenten verändert werden, müssen möglicherweise
abgeleitete Klassen und Klassen aus dem zugehörigen
Paket modifiziert werden.
|
| |
|
Wartungsaufwand kann sich erhöhen
|
| |
|
Effizienz kann verbessert werden
|
| |
Beispiel |
class ProtectedSimpleStack
extends Stack{
protected
int [] a;
protected
int i;
...
}
|
| |
effizientere get() Methode |
public
class ProtectedExtendedStack
extends ProtectedSimpleStack {
public
int get() {
return
a[i--];
}
}
|
| |
default |
friendly
Variablen und Methoden einer Klasse sind in
dem zur Klasse gehörigen Paket sichtbar.
|
| |
|
Wenn diese Komponenten verändert werden, müssen möglicherweise
Klassen aus dem zugehörigen
Paket modifiziert werden.
|
| |
public |
Variablen und Methoden einer Klasse sind überall
sichtbar
|
| |
|
Sinnvoll nur für Methoden, Konstanten und Variablen, die nie verändert werden,
sonst keine Zugriffskontrolle mehr für Variablen.
|
| |
final |
als Attribut für Klassen verhindert weiteres Beerben.
|
| |
Beispiel |
für eine Klasse, die nicht mehr beerbt werden kann:
|
|
public
final
class ExtendedStack
extends SimpleStack {
...
}
|
|
|
| |
final |
als Attribut für Methoden verhindert das Überschreiben
von Methoden
|
| |
Beispiel |
für eine nicht weiter modifizierbare Methode
|
|
class X {
public
final
void foo() {}
}
class Y
extends X {
public
void foo() {}
}
|
Fehlermeldung |
Final methods can't be overridden. Method void foo() is final in class X.
|
|
im JDK z.B. für getClass()
aus Object verwendet.
|