Mặc dù nó là thể hiện của cùng lớp, trong đó testPrivate được bằng văn bản, nhưng không nên nó thông qua một lỗi biên dịch tại System.out.println (o.count);
Không. Nó sẽ không bao giờ ném một lỗi biên dịch.
Điều này tương tự như những gì một trình rút gọn đơn giản và trình thiết lập thực hiện hoặc một hàm tạo bản sao. Hãy nhớ rằng chúng có thể truy cập private
thành viên sử dụng this.
public MyClass {
private String propertyOne;
private String propertyTwo;
// cannot access otherObject private members directly
// so we use getters
// But MyClass private members are accessible using this.
public MyClass(OtherClass otherObject) {
this.propertyOne = otherObject.getPropertyOne();
this.propertyTwo = otherObject.calculatePropertyTwo();
}
public void setPropertyOne(String propertyOne) {
this.propertyOne = propertyOne;
}
public String getPropertyOne() {
return this.propertyOne;
}
}
phương pháp testPrivate
bạn chấp nhận một thể hiện của MyClass. Vì testPrivate
là một phương thức bên trong MyClass
, nó sẽ có quyền truy cập vào private
thuộc tính.
public void testPrivate(MyClass o) {
this.propertyOne = o.propertOne;
}
Phương pháp định nghĩa bên trong lớp sẽ luôn luôn có quyền truy cập vào nó private
thành viên, thông qua this.
và biến ví dụ.
Nhưng nếu bạn xác định testPrivate
ngoài số MyClass
thì bạn sẽ không có quyền truy cập vào private
thành viên.Ở đó bạn sẽ phải sử dụng một phương pháp hoặc một setter hoặc một getter.
Lớp MyClass biết biến số đếm, do đó, không có vấn đề – SaintLike
Riêng tư cho lớp học, không phải là cá thể. Java không cố gắng ngăn bàn tay trái của bạn đánh vào tay phải của bạn. ;) –
Tạo thông qua Eclipse hoặc IDEA hashCode và bằng phương pháp, chúng luôn luôn theo cách đó – Maksym