我有两个班级:
首先,使用一个构造函数:
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
,但我在Second
中实例化了First
。 First
和Second
位于同一个包中。
你能解释一下为什么吗?
答案 0 :(得分:11)
您的构造函数没有访问修饰符使其包私有。 假设First和Second在同一个包中,你可以从第一个调用Second的构造函数。 但是,另一个包中的另一个类无法访问任何构造函数。
答案 1 :(得分:2)
由于您没有任何修饰符,因此访问修饰符现在是默认,这意味着仅在其自己的包中可见
如果您尝试在包装旁边使用它,您将面对当前错误。
尝试阅读:What is the default access modifier in Java?
如果您确实了解@BackSlash评论的内容,请查看以下链接
答案 2 :(得分:2)
您的课程必须是2个包裹。如果您没有提及任何显式访问修饰符,Java会将它们视为默认访问修饰符。那么只能通过同一个包访问。
访问修饰符(至少访问最高访问权限)