This question already has answers here:
Help to understand the issue with protected method
(6个答案)
5年前关闭。
我有以下Foo类,其中包含main方法。
Foo扩展了Nee。
Foo类在com.package1中,而Nee类在com.package2中。
问题是我无法从Foo访问Nee的受保护方法
类通过其对象。为什么会这样(理论上说受保护的成员可以被子类或同一包中的类访问)
Foo类如下所示,
Nee类如下所示,
(6个答案)
5年前关闭。
我有以下Foo类,其中包含main方法。
Foo扩展了Nee。
Foo类在com.package1中,而Nee类在com.package2中。
问题是我无法从Foo访问Nee的受保护方法
类通过其对象。为什么会这样(理论上说受保护的成员可以被子类或同一包中的类访问)
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类如下所示,
package com.package2;
/**
*
* @author Dilukshan Mahendra
*/
public class Nee {
protected void sayProtected(){
System.out.println("I'm a protected method in Nee!");
}
}
最佳答案
由于类com.package1.Foo
和类com.package2.Nee
位于两个不同的包中,因此Nee
类实例将不允许您调用该类的受保护方法。
创建实例Foo
,它是Nee
的子类,然后调用受保护的方法。
Foo foo = new Foo();
foo.sayProtected()
关于java - Java-无法从子类访问 protected 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22371287/
10-08 21:57