我发现C#很有趣......但不幸的是(或幸运的是)它有很多实现OOP规则的功能......他们有不同的机制,困惑....在c#中学习OOP规则的最佳方式或最佳实践
在c#中的虚拟,新的,...修饰符有不同的规则....那么学习OOP规则和轻松使用它们的最佳方式或最佳实践是什么?
那么学习OOP规则并轻松使用它们的最佳方式或最佳实践是什么?
我发现C#很有趣......但不幸的是(或幸运的是)它有很多实现OOP规则的功能......他们有不同的机制,困惑....在c#中学习OOP规则的最佳方式或最佳实践
在c#中的虚拟,新的,...修饰符有不同的规则....那么学习OOP规则和轻松使用它们的最佳方式或最佳实践是什么?
那么学习OOP规则并轻松使用它们的最佳方式或最佳实践是什么?
最好的选择是从fundamental source了解OOP原理(封装,继承和多态)。然后再担心特定的语言实现。一旦你真正理解了基本概念,语言细节就变得易于学习,应用和掌握。
最好的学习方法是保持简单并且实践(编程)很多。 关于虚拟/新/覆盖,主要有三种情况:
虚拟+覆盖 - 使用在基类中的虚拟和覆盖在派生类中,如:
class BaseClass
{
public void virtual Test(){...}
}
class DerivedClass: BaseClass
{
public void override Test(){...}
}
摘要+倍率 - 这是与前面的情况的变型,其中该基础构件不限定体:
abstract class BaseClass
{
public void abstract Test(){...}
}
class DerivedClass: BaseClass
{
public void override Test(){...}
}
无改性剂 - 这是有用的wh恩,你不要覆盖方法计划:
class BaseClass
{
public void Test(){...}
}
class DerivedClass: BaseClass
{
public void OtherMethod(){...}
}
在这种情况下,如果OtherMethod
被评为Test
会有一个警告。事实上,它会与基本方法冲突。您可以通过添加一个new
修改摆脱警告在
abstract class BaseClass
{
public void Test(){...}
}
class DerivedClass: BaseClass
{
public new void Test(){...}
}
不过,我会建议避免new
修改如果可能的话,因为它是有点混乱。
看到这篇文章:http://stackoverflow.com/questions/159978/c-keyword-usage-virtualoverride-vs-new – 2009-07-01 04:12:07
优秀的链接!非常感谢你 – odiseh 2009-07-02 11:36:47