Der Compiler sieht, dass Sie versucht haben von außerhalb des Objekts auf private Daten zuzugreifen. Er lässt Sie wissen, was er darüber denkt:
compiling: KontoTester.java
KontoTester.java:46:
Variable kontoStand in class KontoChecker not accessible from class KontoTester.
System.out.println( bobsKonto.kontoStand );
^
KontoTester.java:47:
Variable kontoStand in class KontoChecker not accessible from class KontoTester.
bobsKonto.kontoStand = bobsKonto.kontoStand + 200;
^
KontoTester.java:47:
Variable kontoStand in class KontoChecker not accessible from class KontoTester.
bobsKonto.kontoStand = bobsKonto.kontoStand + 200;
^
KontoTester.java:48:
Variable kontoStand in class KontoChecker not accessible from class KontoTester.
System.out.println( bobsKonto.kontoStand );
^
4 errors
Es mag ein bisschen töricht erscheinen, dass die
KontoChecker-Klasse private verwendet,
um die main() Methode davon abzuhalten ihre Variablen zu sehen
und dann einige Methoden zur Verfügung stellt, so dass main()
sie dann doch bekommt.
Aber die Idee dabei ist, dass die Zugriffsmethoden jeden Zugang
zu den privaten Daten überprüfen können.
Zum Beispiel kann ein Programmierer den Kontostand eines Bankkontos nicht erhöhen,
in dem er schreibt:
bobsKonto.kontoStand = bobsKonto.kontoStand + 200;
Um den Kontostand zu erhöhen, muss die verarbeiteEinzahlung() Methode
verwendet werden,
in der in einem besser ausgearbeiteten Programm
überprüft werden könnte, ob das Konto nicht gesperrt ist,
ein Kennwort übergeben werden muss, bevor sie irgend etwas ändert
und jede Änderung in eine Log-Datei schreiben könnte.
Dadurch, dass Daten als private deklariert werden
und die Verwendung von Zugriffsmethoden erzwungen wird,
ist es leichter Objekte konsistent und bugfrei zu halten.
Das ist in etwa wie das Hineinstecken der gesamten TV-Elektronik
in eine Box, wobei es dem Benutzer nur erlaubt ist Dinge
über Kontrolltasten von außerhalb der Box zu ändern.
TV-Geräte würden nicht lange halten, wenn Benutzer
gewohnheitsmäßig Kanäle ändern, indem sie die
Elektronik des Geräts mit einem Schraubenzieher bearbeiten.