在子类方法中访问超类的受保护构造函数

时间:2015-10-13 20:28:26

标签: java constructor

我在包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的构造函数的访问修饰符。

1 个答案:

答案 0 :(得分:0)

您正在为class A提供构造函数,但您正在使其protected,因此您无法实例化A类。您只能创建class B的实例。您没有隐藏class B的构造函数,并且它被赋予了默认构造函数。