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:

Sichtbarkeit von Variablen und Methoden
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)


Weiterführende Links

Sichtbarkeit in Java ist auch eine Insel

Lehrvideo  (YouTube)