【发布时间】:2012-09-03 21:54:20
【问题描述】:
我不确定什么看起来更好,或者我什么时候真正在抽象类和属性中使用,或者什么时候使用非抽象属性。我会尝试做一个简单的例子。假设我有这个:
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等方法应该是抽象的。
现在,如果可以,我什么时候应该或应该使用抽象属性?
【问题讨论】:
-
“我什么时候应该或应该使用抽象属性”---当你想断言子类必须提供特定的方法实现时
-
1) 如果这是 Java,可能不会有任何问题。您可能只使用“界面”。这本质上就是您在 C# 中所做的,不是吗? 2)我个人的感觉是,如果它需要成为“合同”的一部分,那么在你的抽象类中声明它是合适的。换句话说,我认为你所做的一切都很好。恕我直言...
-
@paulsm4 你也可以用 C# 做到这一点。
标签: c# .net oop properties abstract