抽象比。 接口混乱(Abstraction Vs. Interface Confusion)

2019-09-20 09:00发布

等等,你开始思考之前,我想清楚了,我不会问接口和抽象之间的日常差异。

我已经通过抽象和接口之间的差别消失了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....}
}

现在,如果我加入洗衣机以下新的抽象方法: -

abstract public void Rinse(int loadSize);

如何继承所有类(即飞利浦/三星/ Videocon公司)将自动获得与变化更新?

Answer 1:

他们不会得到更新-你仍然必须手动的实现增加Rinse每一位从继承类WashingMachine

我相信MSDN说的是,如果你有一个抽象类定义的非抽象方法,你改变这种方法,从抽象类继承的类都会从变化自动受益。



Answer 2:

你的具体派生类型都需要提供任何继承的抽象成员的实现......因此你的类型仍然需要提供冲洗实现,当你修改的基础。

http://msdn.microsoft.com/en-us/library/sf985hc5(v=vs.71).aspx



Answer 3:

这是读接口和抽象类的区别,当一个混乱的程序员通常会得到。 你指的线只有真,如果在抽象类的变化是具体的。 我的意思是你加的属性或执行的方法。 或者,如果我是更具体的,在基抽象类的任何变化,这不作任何具体的抽象类。 这样的变化在抽象类是可能的,也没有办法,你可以在界面中添加这种变化。



Answer 4:

如何继承所有类(即飞利浦/三星/ Videocon公司)将自动获得与变化更新?

他们会突然变得非可编译,是不是更新?

但我想指出的是,有其实是在接口抽象类和方法,抽象方法没有区别。 主要区别在于一个事实,即抽象类可以有落实,不能接口的方法。

事实上,我会说,我不喜欢MSDN的定义,发现它混淆,有些误导。



文章来源: Abstraction Vs. Interface Confusion