【发布时间】:2015-06-14 07:53:43
【问题描述】:
为什么我不能为这段代码在包外使用受保护的构造函数:
package code;
public class Example{
protected Example(){}
...
}
检查.java
package test;
public class Check extends Example {
void m1() {
Example ex=new Example(); //compilation error
}
}
- 为什么即使我扩展了类,我也会收到错误消息? 请解释
编辑:
编译错误:
构造函数 Example() 不可见
【问题讨论】:
-
了解编译错误对于诊断问题非常有用...
-
看看这个stackoverflow.com/questions/5150748/…,你可以在子类的构造函数中使用超类的受保护构造函数,但不能在其他任何地方实例化超类实例。
-
你不能做的原因或多或少是一样的
public class Example {protected int i;} /* in another package: */ public class Check extends Example {void m1(Example ex) {ex.i = 2;}} -
选择重复问题是不幸的,因为这两个问题虽然相关,但截然不同,而另一个问题根本不回答这个问题。
标签: java protected access-modifiers