问题在于受保护的访问。这段代码出了什么问题:
package pkgA;
public class Foo {
protected int b = 6;
}
package pkgB;
import pkgA.*;
class Food extends Foo {
void met(){
System.out.println(new Food().b);
}
};
public class Baz {
public static void main(String[] args) {
Food fd = new Food();
fd.met(); // *line 1*
System.out.println(" " + fd.b); // *line 2*; error : b has protected access in Foo
}
}
为什么第1行是好的但第2行不是?
答案 0 :(得分:0)
您正试图从b
访问Baz
,这是不可能的,因为b
是protected
。只有源自Foo
的类才能访问b
。
您可以访问met()
,因为它没有访问修饰符,因此可以访问同一个包中的类(Baz
和Food
都在同一个包中)。< / p>
这是基本的继承方式。更多信息:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html。