“构造函数不可见”错误
我有两节课:
首先,使用一个构造函数:
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
in First
。 First
和Second
在同一个包中。
你能解释一下为什么吗?
没有构造函数的访问修饰符使其包为私有 。 假设First和Second在同一个包中,你可以从第一个调用Second的构造函数。 但是,另一个包中的另一个类无法访问任何构造函数。
你的class级必须是两个包。 如果您没有提及任何显式访问修饰符,Java会将它们视为默认访问修饰符。 然后,您只能通过同一个包访问它们 。
访问修饰符(从最低访问权限到最高访问权限)
- 私人 – 仅限同一class级
- 默认 – 仅在同一个包中
- protected – 其他包中的相同包+子类
- 公众 – 从任何地方
由于您没有任何修饰符,因此访问修饰符现在是默认值 ,这意味着它仅在其自己的包中可见
如果您尝试在包装旁边使用它,您将面临当前错误。
试着阅读: Java中的默认访问修饰符是什么?
如果您没有理解@BackSlash评论的内容,请查看以下链接
问题: 从超类调用方法