【发布时间】:2012-07-26 21:04:42
【问题描述】:
等等,在你开始思考之前,我想澄清一下,我不要问接口和抽象之间的常规区别。
我已经在MSDN 中了解了抽象和接口之间的区别。
据说:
通过更新基类,所有继承类都会随着更改自动更新。
另一方面,接口一旦创建就不能更改。如果新版本 需要一个接口,你必须创建一个全新的接口。
看到这个:-
任何人都可以使用以下示例证明这一点:-
abstract class WashingMachine
{
abstract public void Wash();
}
class Philips : WashingMachine
{
public Philips() { }
override public void Wash(){//Wash code here....}
}
class Samsung : WashingMachine
{
public Samsung() { }
override public void Wash(){//Wash code here....}
}
class Videocon : WashingMachine
{
public Videocon() { }
override public void Wash(){//Wash code here....}
}
现在,如果我在 WashingMachine 中添加以下新抽象方法:-
abstract public void Rinse(int loadSize);
所有继承类(即 Philips/Samsung/Videocon)将如何自动随着更改而更新?
【问题讨论】:
-
如果方法 'Rinse' 是虚拟的而不是抽象的,所有继承的类都会自动更新。
-
@Mert,澄清你的观点。这没有任何意义。即使你将Rinse定义为virtual,它也不会自动更新,你必须重写派生的方法,否则它被视为抽象类的实现方法,你不需要指定“virtual”关键字跨度>
-
我认为您需要澄清“更新”的含义。如果将其定义为虚拟并提供默认逻辑,那么所有派生类既可以使用默认逻辑,也可以覆盖它。
-
@Mert,我明白了,所以它再次与其他人强调的非抽象方法有关....感谢您的输入....它帮助我了解究竟是什么MSDN 在那篇文章中的意思。希望,MSDN 可以更具体
标签: c# .net oop interface abstract-class