【发布时间】:2010-11-25 19:42:43
【问题描述】:
【问题讨论】:
-
它的乌龟一路向下......
-
什么!?我一定是错过了什么……
-
如果你问我需要更多的乌龟。
【问题讨论】:
这种模式本质上允许您引用父类中的具体子类。 例如:
public abstract class Turtle<T> where T : Turtle<T>
{
public abstract T Procreate();
}
public class SeaTurtle : Turtle<SeaTurtle>
{
public override SeaTurtle Procreate()
{
// ...
}
}
对比:
public abstract class Turtle
{
public abstract Turtle Procreate();
}
public class SnappingTurtle : Turtle
{
public override Turtle Procreate()
{
// ...
}
}
在前者中,指定SeaTurtle 的宝宝将是SeaTurtle。
【讨论】:
java.lang.Enum 使用该模式为子类实现 java.lang.Comparable。我确定 C# 也有类似的东西。
我看不出有什么用。基本上和
是一样的public class Turtle
{
}
【讨论】:
Turtle 无法实例化。
Turtle 并实例化它,但您不能实例化 Turtle 本身的副本。