【发布时间】:2017-06-19 08:52:27
【问题描述】:
我来自 C++ 背景,我只是在使用 Java 中的 Access-Modifiers,我决定尝试一些代码,但现在我遇到了一个错误:
YouArePublic() 在 YouArePublic 中不公开;无法从 外包装
我不知道为什么。我知道 YouArePublic 类中的构造函数是默认的,因此我无法在它自己的包之外的任何其他类中创建它的对象,但我并没有真正在这里创建对象。
编译器是否隐式尝试创建 Tester 类的对象,从而调用其默认的无参数构造函数,然后使用 super() 调用其超类 YouArePublic 的构造函数?但是 main() 是静态的,所以它不需要创建类的实例来调用它。
我不确定这里发生了什么,真的需要一些帮助。
package one;
import two.YouArePublic;
class Tester extends YouArePublic { // Inheritance in different package
public static void main(String args[]) {
Tester ot = new Tester();
ot.displayMessage();
}
}
package two;
public class YouArePublic {
String message = "You are public in package TWO!";
YouArePublic() { super(); }
public void displayMessage() {
System.out.println(message);
}
}
【问题讨论】:
标签: java inheritance visibility