Foo类如下所示,
package com.package1;
import com.package2.Nee;
/**
*
* @author Dilukshan Mahendra
*/
public class Foo extends Nee{
public static void main(String[] args) {
Nee mynee = new Nee();
/* mynee.sayProtected(); This gives me a compile error,
sayProtected() has protected
access in com.package2.Nee
*/
}
}
Nee Class如下所示,
package com.package2;
/**
*
* @author Dilukshan Mahendra
*/
public class Nee {
protected void sayProtected(){
System.out.println("I'm a protected method in Nee!");
}
}
答案 0 :(得分:3)
由于类com.package1.Foo
和类com.package2.Nee
位于两个不同的包中,因此Nee
类实例将不允许您调用该类的受保护方法。
创建实例Foo
,它是Nee
的子类,然后调用受保护的方法,。
Foo foo = new Foo();
foo.sayProtected()
答案 1 :(得分:1)
如果你清楚受保护的成员在没有子类的情况下无法访问外部包那么你在哪里创建Nee类对象来访问其子类或其他任何地方的受保护方法并不重要。同样的事情。只有子类知道受保护的成员,并且可以通过子类对象访问。
答案 2 :(得分:0)
成员可以通过同一个包中的子类或类访问。 您正在使用两个不同的包。
答案 3 :(得分:0)
受保护允许访问子类的成员。在这里,您尝试访问Nee
受保护的成员时受保护只允许访问Foo
上的受保护成员。