2016-07-29 9 views

Antwort

0

Der Punkt der Einkapselung ist damit Sie einen expliziten Algorithmus für die Aktualisierung einer Variablen bereitstellen können. Zum Beispiel erlauben, wenn Sie nur andere Klassen eine Variable zu aktualisieren direkt:

var1 = 123; 

... dann sind Sie mit den anderen Klassen in der Lage zu stecken nur Variablen Ihre Klasse zu aktualisieren, ohne die Kontrolle über welchem ​​Wert zugewiesen wird oder wenn irgendwelche anderen Variablen aktualisiert werden sollten, als Folge davon, dass diese Variable aktualisiert wird.

Aber wenn Sie Ihre Variablen deklarieren private und bieten zu get und set Ihre Variablen Werte ein public Accessor zu sein, dann haben Sie die volle Kontrolle darüber, wie diese Variablen aktualisiert werden.

Zum Beispiel könnten Sie zwei miteinander verbundene Variablen haben. Wenn eine Variable aktualisiert wird, sollte auch die andere aktualisiert werden. Vielleicht haben Sie zwei Variablen, var1 und var2 (beide natürlich private deklariert, so dass keine andere Klasse direkt darauf zugreifen kann). Vielleicht sollte var2 immer eine Summe von 5 mehr als der Wert von var1 sein. Also, wenn var 1 aktualisiert wird, unter Verwendung einer setter (Kapselung) Sie diese Anforderung erzwingen können:

void setVar1(int val) { 
    var1 = val; 
    var2 = val + 5; 
} 

und die inverse, Einstellung field2 subtrahiert 5 von field1:

void setVar2(int val) { 
    var2 = val; 
    var1 = val - 5; 
} 

Sie auch die Werte einschränken könnten dieser Variablen ist ein bestimmter Bereich von Werten, wie von 10 bis 200 (aus welchem ​​Grund auch immer). Sie könnten den Wert prüfen, der an den Setter übergeben wird, und die Ausnahme IllegalArgumentException mit einer Ausnahmebedingungsnachricht auslösen, die erläutert, welche Regel verletzt wurde: Value of var1 must be >= 5 <= 200.

Dies ist nur ein einfaches Beispiel dafür, warum Verkapselung ist gut und sollte geübt werden, wenn Java-Code zu schreiben (oder jede OOP Art Sprache) und warum die meisten IDEs wird die Erzeugung dieser Getter und Setter für Sie automatisieren.

Sie können learn more about encapsulation here.

Verwandte Themen