【发布时间】:2016-08-14 18:37:42
【问题描述】:
我读到不可能从构造函数是私有的类创建子类,但奇怪的是我能够做到,这个 sn-p 还有更多的东西吗?
请有人提供一个易于理解且令人满意的解释。
public class app {
public static void main(String[] args) {
app ref = new app();
myInheritedClass myVal = ref.new myInheritedClass(10);
myVal.show();
}
int myValue = 100;
class myClass {
int data;
private myClass(int data) {
this.data = data;
}
}
class myInheritedClass extends myClass {
public myInheritedClass(int data) {
super(data);
}
public void show() {
System.out.println(data);
}
}
}
我在https://www.compilejava.net/ 上运行了这个 sn-p,输出为 10。
【问题讨论】:
-
为什么它不能工作?你在哪里读过帽子?子类有一个公共构造函数——这使得它可以访问
-
OP - 请注意,Java 类名通常以大写字母开头。
-
因为这些是内部类,它们都在同一个(外部)类中。
-
使用编码约定可以让其他人更容易阅读您的代码。如果您关心您的代码被阅读或看起来很专业,请使用编码约定。
-
链接的重复不是同一个问题
标签: java subclass private-constructor