首页 > 解决方案 > 父类知道派生类的类型可以吗?

问题描述

父类可以通过泛型参数知道它的派生类的类型吗?

class Cloneable<T> where T : is Cloneable {
    abstract T clone();
}

class A : Cloneable<A> {
    override A Clone() {
         // The child class knows how to clone itself.
         return new Child(...);  
    }
}

在基类 ( Cloneable ) 中,我有一个抽象方法 ( Clone ),它应该在派生类中实现。
我希望基类中Clone()方法的返回类型是派生类(A)。

这种模式是否违反任何软件设计原则?您知道 .Net 类库或 Java 中的任何类似设计吗?

标签: javac#oopdesign-patternssoftware-design

解决方案


推荐阅读