Tôi có một số nghi ngờ về số nhận dạng được bảo vệ. Trong chương đầu tiên của Hướng dẫn học lập trình Java được chứng nhận bởi K.Sierra tôi đã tìm thấy các thông tin sau:Hành vi thành viên được bảo vệ khi nó được kế thừa.
"Khi phân lớp bên ngoài-gói thừa kế thành viên được bảo vệ, thành viên đó (được thừa kế bởi lớp con) trở thành riêng tư đối với bất kỳ mã nào bên ngoài lớp con, ngoại trừ các lớp con của lớp con. "
Tôi đã cung cấp mã mẫu phản ánh tuyên bố ở trên và điều đó hoàn toàn rõ ràng đối với tôi.
// Parent class
package package1;
import package2.Child;
public class Parent {
protected int i = 5;
}
// Child class
package package2;
import package1.Parent;
public class Child extends Parent {
// variable 'i' inherited
}
package package2;
public class Neighbour {
public void protectedTesting(){
Child child = new Child();
System.out.println(child.i); // no access
}
}
Tôi đã bắt đầu thử nghiệm và thực hiện một thay đổi nhỏ - di chuyển hàng xóm sang gói1. Và có quyền truy cập vào "i" biến mà là một chút ngạc nhiên đối với tôi vì nó không phù hợp với tuyên bố "trở thành tin tới bất kỳ mã bên ngoài lớp con" class
Neighbor sau khi thay đổi:
package package1;
import package2.Child;
public class Neighbour {
public void protectedTesting(){
Child child = new Child();
System.out.println(child.i); // access!
}
}
Hãy làm rõ với tôi. Cảm ơn.
Câu trả lời chi tiết và giải thích. – MrKiller21