Ich habe ein paar Fragen im Zusammenhang mit immutable
Klassenfelder.Unveränderliche Klassen Felder Abfragen
Angenommen, ich habe eine Klasse Student
:
public class Student {
private final int empId;
public int getEmpId() {
return empId;
}
public Student(int empId) {
this.empId=empId;
}
}
Frage 1: Warum sein notwendigen das Feld als private
endgültig zu definieren?
Frage 2: Warum final
zusammen mit private
erforderlich ist. Wie wenn wir das Feld als final
deklariert haben, wird es außerhalb der Klasse nicht sichtbar sein?
Frage 3: Warum können wir es public final
nicht machen?
Vielen Dank im Voraus.
q1) nicht streng wahr, weil eine öffentliche final int ist unverwundbar für die Änderung – Michael
Hallo, Vielen Dank für die Antwort. Für Punkt 2 war es Tippfehler, den ich privat meinte. Frage 2: Warum wird zusammen mit privaten Finale benötigt. Wenn wir das Feld als PRIVATE deklarieren, wird es außerhalb der Klasse nicht sichtbar sein. –
@KamalVerma 'private' hat nicht direkt etwas damit zu tun, ob die Klasse unveränderlich ist oder nicht. Der Punkt über unveränderlich ist: Es sollte nicht möglich sein, den Zustand (die Mitgliedsvariablen) zu ändern, nachdem das Objekt konstruiert und initialisiert wurde. – Jesper