Vorlesung Informatik 1 - Teil A: Java Kurs
2.5 Sichtbarkeit, get/set Methoden
Bisher haben wir private, public und protected kennengelernt.
Es gibt noch eine weitere, auch 'Paketsichtbarkeit' genannt, sie gilt wenn keine Angabe gemacht
wird:
class Beispiel{
public static final int GROSS=1, KLEIN=2,
MITTEL=3;
private int n;
int k;
// Paketsichtbar
Die Variable k ist für alle Klassen sichtbar, die im gleichen Paket wie Beispiel sind.
Zusammengefasst gilt:
Angabe | eigene Klasse | Klassen im gleichen Paket | abgeleitete Klasse | andere Klassen |
---|---|---|---|---|
public | ja | ja | ja | ja |
protected | ja | ja | ja | nein |
- | ja | ja | nein | nein |
private | ja | nein | nein | nein |
Methoden sind häufig public.
Ausnahmen:
- Hilfsmethoden, die nur in der eigenen Klasse gebraucht werden (private) oder nur in abgeleiteten Klassen bzw. im eigenen Paket (protected).
- Werden alle Konstruktoren private deklariert, verhindert man, dass Objekte von der
Klasse erzeugt werden können, Beispiel:
public class Schatz{
private Schatz derSchatz = null;
private Schatz() { ... } // privater Konstruktor verhindert Instanziierung
public Schatz getInstanz(){
if(derSchatz ==null) {
derSchatz =new Schatz();
}
return derSchatz ;
}
}
Variablen sollten
grundsätzlich private oder protected sein.
Damit hat man die Kontrolle darüber, welche Klasse eine Variable geändert hat, was bei der Fehlersuche enorm
hilft.
Ausnahme: öffentliche Konstanten (public static final).
Den Zugang zu Variablen ermöglicht man dann durch get/set Methoden:
public class Schuh{
private int groesse;
private Color farbe;
...
public int getGroesse(){
return this.groesse;
}
public Color getFarbe(){
return
this.farbe;
}
public void setFarbe(Color
farbe){
this.farbe = farbe;
}
Jetzt kann man Farbe und Größe eines Schuhs abfragen, aber nur die Farbe
verändern.
Eclipse unterstützt das Anlegen von get/set Methoden (Rechsklick --> Source --> Generate Getters and Setters)