我真的不确定什么看起来更好,什么时候我真的在抽象类和属性中使用,何时使用非抽象属性。我会尽量举个简单的例子。假设我有这个:不知道什么时候使用抽象属性,什么时候不使用
abstract class Human
{
public GenderType Gender { get; set; }
public string Name { get; set; }
public Date Born { get; set; }
public bool IsNerd { get; set; }
abstract public void Speak();
abstract public void Sleep();
abstract public void AnoyingPeopleOnStackOverflow();
//... so on
}
class Peter : Human
{
//Peter is special, he got a second name
//But thats all, everything else is the same as like on other humans
public string SecondName { get; set; }
//...override abstract stuff
}
这样好吗?据我了解,如果我不想重写它,我不必使用抽象属性。而在这种情况下就可以了,只要像Speak
,Sleep
等这样的方法应该是抽象的。
现在,如果这是好的,什么时候会或应该使用抽象属性?
“什么时候会或应该使用抽象属性”---当您想要声明子类必须提供特定的方法实现时 – zerkms
1)如果这是Java,则可能没有任何问题。你可能只是使用“界面”。这基本上是你在C#中做的,不是吗?2)我个人的感觉是,如果它需要成为“契约”的一部分,那么在你的抽象类中声明它是恰当的。换句话说,我认为你所做的完全没问题。恕我直言...... – paulsm4
@ paulsm4你也可以用C#来做到这一点。 –