我在包p1中有一个A类,它有一个受保护的构造函数。我在另一个包p2中有另一个类B,它是类A的子类。要求是在类B的某个方法中访问类A的受保护构造函数,而不更改类A中构造函数的访问修饰符。
当我尝试执行相同操作时,我收到一条错误消息,指出构造函数不可见。
package p1;
public class A
{
protected A()
{
System.out.println("Hello");
}
}
package p2;
import p1.A;
public class B extends p1.A
{
public static void main(String args[])
{
new A(); // Error is on this line
}
}
请注意,我可以使用super()在类B的构造函数中访问类A的构造函数,但要求是在类B的某个函数中访问它,而不更改类A的构造函数的访问修饰符。
答案 0 :(得分:0)
您正在为class A
提供构造函数,但您正在使其protected
,因此您无法实例化A类。您只能创建class B
的实例。您没有隐藏class B
的构造函数,并且它被赋予了默认构造函数。