我有些难以理解Java中protected访问修饰符(或其背后的设计)。我认为它表示包访问和通过继承包含抽象成员的类的对象进行访问。
我编写了以下示例代码。我发现如果取消注释,那么注释掉的行会产生编译错误。为什么我可以通过Second对象在Second中访问pro,但不能通过First对象在Second中访问?
package first;
public class First {
protected void pro(){
System.out.println("Can see protected method");
}
}
package first;
public class InFirst {
public static void main(String[] args){
First fst = new First();
fst.pro();
}
}
package second;
import first.First;
public class Second extends First {
public static void main(String[] args){
First fst = new First();
// fst.pro();
Second sec = new Second();
sec.pro();
}
}
protected
和其他访问修饰符。链接 - aioobe