我知道在语法和概念上,“虚拟”和“静态”成员的概念是截然相反的,但我试图稍微突破一下信封,看看是否有办法实现以下目标:
假设我有一个抽象类Animal
,它有一个属性NumberOfLegs
。我的Cat
班级应该NumberOfLegs
定义为 4,而Spider
应该有 8 条腿。我想要这样的代码(显然下面的代码不会编译):
public abstract class Animal {
public static abstract int NumberOfLegs { get; }
public void Walk() {
// do something based on NumberOfLegs
}
}
public class Cat : Animal {
public static override int NumberOfLegs { get { return 4; } }
}
public class Spider : Animal {
public static override int NumberOfLegs { get { return 8; } }
}
我希望它是静态的,因为它不依赖于实例;它仅取决于子类类型。
你会怎么做?