homedukeOOP mit Java: Sichtbarkeitsattribute Prof. Dr. Uwe Schmidt FH Wedel

Sichtbarkeitsattribute

weiter

weiter

Sichtbarkeitsattribute

private
Variablen und Methoden einer Klasse sind nur innerhalb der Klasse selbst sichtbar.
weiter
merke
diese Komponenten können verändert werden, ohne dass Unterklassen davon beeinflusst werden.

Sicherheit, Modularität

weiter
merke
abgeleitete Klassen können die Information aus den private-Komponenten ihrer Basisklassen nicht zur Implementierung ihrer eigenen Operationen ausnutzen.

Effizienzverlust möglich

weiter
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.

weiter
merke
Wenn diese Komponenten verändert werden, müssen möglicherweise abgeleitete Klassen und Klassen aus dem zugehörigen Paket modifiziert werden.
weiter
merke
Wartungsaufwand kann sich erhöhen
weiter
merke
Effizienz kann verbessert werden
weiter
Beispiel
class ProtectedSimpleStack
  extends Stack{
 
  // die Datenfelder
  // fuer Unterklassen sichtbar
 
  protected
  int [] a;
 
  protected
  int i;
 
  ...
}
 
weiter
effizientere get() Methode
public
class ProtectedExtendedStack
  extends ProtectedSimpleStack {
 
  public
  int get() {
    return
      a[i--];
  }
}
 
weiter
default
friendly
Variablen und Methoden einer Klasse sind in dem zur Klasse gehörigen Paket sichtbar.
weiter
merke
Wenn diese Komponenten verändert werden, müssen möglicherweise Klassen aus dem zugehörigen Paket modifiziert werden.
weiter
public
Variablen und Methoden einer Klasse sind überall sichtbar
weiter
merke
Sinnvoll nur für Methoden, Konstanten und Variablen, die nie verändert werden,
sonst keine Zugriffskontrolle mehr für Variablen.
weiter
final
als Attribut für Klassen verhindert weiteres Beerben.
weiter
Beispiel
für eine Klasse, die nicht mehr beerbt werden kann:
 
public
final
class ExtendedStack
  extends SimpleStack {
  ...
}
 
 
im JDK z.B. für Integer verwendet.
weiter
final
als Attribut für Methoden verhindert das Überschreiben von Methoden
weiter
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.

Letzte Änderung: 06.05.2013
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel