如何不调用父构造函数

时间:2014-04-09 16:21:38

标签: java inheritance constructor

当创建继承类的实例时,它也会运行其父构造函数。 我怎样才能让我的孩子不能调用我的父构造函数?

 class parent {

    int a;

    parent() {
        System.out.println("parent");
    }
}

class child extends parent {

    child() {
        System.out.println("child");
    }

}

public class Test2 {

    public static void main(String args[]) {
        child a = new child();
    }
}

2 个答案:

答案 0 :(得分:1)

正如其他人所说,这是不可能的。如果您认为这是必要的,那么您的设计就会出现问题。

话虽如此,你可以通过在父类中添加另一个构造函数并显式调用它来逃避类似的事情:

class Parent {

    int a;

    Parent() {
        System.out.println("parent");
    }

    Parent(boolean unused){
       //do nothing
    }
}

class Child extends Parent {

    Child() {
        super(false);
        System.out.println("child");
    }

}

public class Test2 {

    public static void main(String args[]) {
        Child a = new Child();
    }
}

答案 1 :(得分:0)

如果您不需要创建基类的多个实例,则可以将基类构造函数设为私有。