Tôi đã tạo cá thể lớp cơ sở trong lớp dẫn xuất và cố gắng truy cập các thành viên được bảo vệ.java - các thành viên được bảo vệ được truy cập trong lớp dẫn xuất sử dụng cá thể lớp cơ sở
Tôi có thể truy cập trực tiếp các thành viên được bảo vệ trong lớp dẫn xuất mà không cần khởi tạo lớp cơ sở.
lớp Base:
package com.core;
public class MyCollection {
protected Integer intg;
}
Một lớp học có nguồn gốc trong cùng một gói -
package com.core;
public class MyCollection3 extends MyCollection {
public void test(){
MyCollection mc = new MyCollection();
mc.intg=1; // Works
}
}
Một lớp học có nguồn gốc trong một gói khác nhau -
package secondary;
import com.core.MyCollection;
public class MyCollection2 extends MyCollection{
public void test(){
MyCollection mc = new MyCollection();
mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
}
}
Làm thế nào chúng ta có thể truy cập một thành viên được bảo vệ của một lớp cơ sở trong một lớp dẫn xuất bằng cách sử dụng cá thể của lớp cơ sở khi lớp dẫn xuất cũng là trong s Ame gói nhưng không khi lớp dẫn xuất là trong gói khác nhau?
Nếu tôi đánh dấu thành viên được bảo vệ là "tĩnh" thì tôi có thể truy cập thành viên được bảo vệ của lớp cơ sở bằng cá thể lớp cơ sở trong lớp dẫn xuất nằm trong gói khác.
thể trùng lặp của [Protected Java truy cập không làm việc] (http://stackoverflow.com/questions/332920/java-protected-access-not-working) --- Thực ra đó là sai lầm! Lấy làm tiếc! Điều này chắc chắn là một dupe mặc dù. – polygenelubricants
đừng lo lắng, IDE của bạn sẽ không tạo ra bất kỳ sự khác biệt nào với câu hỏi vì đây là về ngữ nghĩa của chính ngôn ngữ Java. –
có thể trùng lặp của [tại sao tôi không thể truy cập phương pháp java được bảo vệ ngay cả khi tôi đã mở rộng lớp học?] (Http://stackoverflow.com/questions/1622219/why-cant-i-access-protected-java-method -even-thought-ive-extended-the-class) – starblue