Wpf*_*Bee 47 c# oop abstract-class interface
假设我们有两个方法M1(),并M2()在接口.抽象类也有两个相同的抽象方法.如果任何类实现了此接口或从抽象类继承,则必须同时实现其中的方法.
所以对我来说,似乎我的场景中的接口或抽象类的行为相同.那么,任何人都可以在这个特定的情况下突出显示这两者之间的区别,并建议是否在这里使用抽象类或接口?
Mat*_*hew 125
抽象类和接口之间存在技术差异,即抽象类可以包含方法,字段,构造函数等的实现,而接口仅包含方法和属性原型.一个类可以实现多个接口,但它只能继承一个类(抽象或其他).
但是,在我看来,Interfaces和Abstract Classes之间最重要的区别是语义差异.
接口定义了某些东西可以做什么(它的行为方式),而抽象类定义了什么是什么.
举例来说IEnumerable,这背后的语义含义是任何实现的东西IEnumerable都是可以使用的,它并不意味着它是一个枚举,而是它可以表现得像一个(可以枚举).
与洗衣机示例相比,任何继承它的东西都是一种洗衣机.任何继承它的东西都是洗衣机,顶部装载机或侧面装载机等.
相反,如果你有一个名为的接口ICanWash,它可能包含一个名为的方法Wash.你可以有各种各样的东西ICanWash,无论Person是抽象的洗衣机类,还是抽象的洗衣机类,等等,实际的实现并不重要,只需要知道行为就是可以洗东西.
总之,类定义了什么是什么,接口定义了什么可以做什么.
| 归档时间: |
|
| 查看次数: |
80685 次 |
| 最近记录: |