由于显而易见的原因,我们不能像这样直接实例化一个抽象类:
AbstractObj obj = new AbstractObj();
其中 AbstractObj 是以下形式的一个类:
public abstract class AbstractObj {
//... Body omitted
}
但是,如果我们有扩展类,例如:
public class ConcreteObj extends AbstractObj {
//... Body omitted
}
public class AnotherObj extends AbstractObj {
//... Body omitted
}
是否可以通过以下方式实例化对象?这将根据传入的变量的类确定必须使用哪个构造函数。现在假设 o1 和 o2 保证为相同类型。
protected AbstractObj computeDiff(AbstractObj o1, AbstractObj o2){
AbstractObj delta = ...?
}
例如,在上面,如果 o1 是 ConcreteObj 类型,有没有办法在运行时识别它是否属于这种类型并使用适当的构造函数?
慕妹3146593
开心每一天1111
慕神8447489
相关分类