使用构造函数内的派生类实例化基类引用

时间:2018-03-16 20:08:37

标签: java polymorphism

我有A1和A2类,它们来自A类。 我有一个A类的引用,我想使用它的构造函数,根据参数,通过A1或A2实例化对象。

class A {
    public A(bool someCondition) {
        if (someCondition) {
            //this = new A1() //this does not work
        } else {
            //this = new A2() //this does not work
        }
    }
}

有可能实现这一目标吗?

1 个答案:

答案 0 :(得分:3)

易。只是不要在A构造函数中执行此操作。您需要一个静态构建器方法:

class A {
    public static A build(bool someCondition) {
        if (someCondition) {
            return new A1();
        } else {
            return new A2();
        }
    }
}

但是,在构造函数A中执行该操作是不可能的。你说的任何特定类的构造函数:给我这个特定类的实例,而不是其他类; - )