【发布时间】:2014-10-21 05:29:16
【问题描述】:
我有两门课:
首先,使用一个构造函数:
public class First {
First (ObjectA myObjectA) {
//do stuff
}
}
其次,有两个构造函数:
public class Second {
Second (ObjectB myObjectB) {
//do something...
}
Second (ObjectC myObjectC) {
//do something else...
}
}
当我想实例化我的First 类时,Eclipse 给我一个错误(“构造函数不可见”),我必须将public 添加到First 的构造函数中:
First first = new First(myObject); //Error : "The constructor is not visble"
但是当我实例化我的Second 类时,我没有错误:
Second second = new Second(myObjectC); //No error...
注意:我在另一个类中实例化了First,但我在First 中实例化了Second。 First 和 Second 在同一个包中。
你能解释一下为什么吗?
【问题讨论】:
-
肯定“第二”与“第一”在同一个包中。请记住:默认访问(即无修饰符)对同一包中的类可见。而且,Other 类位于与第一个不同的其他包中。
-
First、Second以及您尝试实例化它们的类在哪些包中? -
Java 中的“访问修饰符”有点令人困惑,并不是特别“常规”。有
public、private、protected和“无修饰符”。public可以从任何地方访问,private只能从同一个类中访问,protected从一个子类中访问,并且从同一个“包”中的任何类中“无修饰符”。
标签: java constructor public