我有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
}
}
}
有可能实现这一目标吗?
答案 0 :(得分:3)
易。只是不要在A
构造函数中执行此操作。您需要一个静态构建器方法:
class A {
public static A build(bool someCondition) {
if (someCondition) {
return new A1();
} else {
return new A2();
}
}
}
但是,在构造函数A
中执行该操作是不可能的。你说的任何特定类的构造函数:给我这个特定类的实例,而不是其他类; - )