Ja. Die Idee der Kapselung ist es, Details eines Objekts vor anderen Bereichen der Software zu verbergen. Einige der Details können Methoden sein.
class Bankkonto { // Instanzvariablen private String kontonummer; private String kontoinhaber; private int kontostand; private int zaehler = 0; //zaehlt wie oft das Bankkonto verwendet wird //Konstruktor Bankkonto( String ktoNummer, String ktoInhaber, int start ) { kontonummer = ktoNummer; kontoinhaber = ktoInhaber; kontostand = start; } private void inkrementZaehler() { ; } void verarbeiteEinzahlung( int betrag ) { inkrementZaehler(); kontostand = kontostand + betrag ; } void verarbeiteAuszahlung( int betrag ) { int gebuehr; inkrementZaehler(); if ( kontostand < 100000 ) gebuehr = 15; else gebuehr = 0; kontostand = kontostand - betrag - gebuehr ; } }
Eine private Methode ist eine Methode, die nur von anderen Methoden des Objekts verwendet werden kann. Teile eines Programms außerhalb des Objekts können private Methoden des Objekts nicht direkt aufrufen (verwenden).
Angenommen, die Bank möchte aufzeichnen wie oft ein Bankkonto verwendet wird.
(Das könnte als Sicherheitsmaßnahme geschehen.)
Die "Verwendung" eines Bankkontos ist
die Verarbeitung eines Guthabens oder eines Schecks.
Um das zu erreichen, wird den Daten der Bankkonto
-Klasse ein "Zähler" hinzugefügt.
(Teile der Klasse wurden vorübergehend ausgelassen.)
Die Methoden verarbeiteEinzahlung()
und
verarbeiteAuszahlung()
rufen
inkrementZaehler()
auf, um die Variable zaehler
jedes Mal dann zu erhöhen, wenn sie verwendet wurden.
Wir wollen die Variable zaehler
nur aus diesen zwei Gründen
ändern, also wird die Methode inkrementZaehler()
als private
deklariert
(und die Variable zaehler
wird ebenfalls als private
deklariert.)
Wir füllen die Lücken aus, so dass die neue private Methode die Variable zaehler
inkrementiert.