So wurde ich eine Klasse den anderen Tag zu machen und verwenden Eclipse-Methode die Methode equals zu erstellen, wenn ich, dass es realisierte den folgenden Arbeits Code generiert:Java Privat Feld Sichtbarkeit
class Test {
private int privateInt;
[...]
public boolean equals(Object obj) {
[...]
Test t = (Test) obj;
if (t.privateInt == privateInt) {
[...]
}
}
t.privateInt .. ???? Es soll privat sein! Ich denke also, es gibt noch eine weitere Feldsichtbarkeit außer privat, geschützt, paketgeschützt und öffentlich.
Was passiert hier? Wie heißt das? Wo würde jemand das benutzen? Wird die Kapselung nicht unterbrochen? Was, wenn die Klasse keinen Mutator hat und ich das geändert habe? Passiert das auch mit C++? Ist das ein OO-Idiom? Wenn nicht, warum hat Java das getan?
Allgemein, wo kann ich Informationen darüber finden?
Vielen Dank.
OK ... Ich verstehe jetzt ... Aber WARUM? Warum hat Java das passieren lassen? Können Sie an einige Beispiele aus dem wirklichen Leben denken? Ich verstehe, warum es in equals funktionieren sollte. Aber es muss ein besseres Beispiel geben. – pek
Die einzigen anderen Beispiele wären ähnlich wie bei equals, wo Sie eine andere Instanz Ihrer Klasse als Argument erhalten. Warum Java das getan hat, ist in OO-Sprachen ziemlich Standard - C++ funktioniert genauso. Überladen == in C++: http://artis.imag.fr/~Xavier.Decoret/resources/C++/operator=0.html –
Soooo ... ist es ziemlich nutzlos Trivia? – pek