9 c# oop abstract-class interface
根据我的经验,我认为以下是正确的.如果我错过了重点,请告诉我.
接口:
在接口中声明的每个单独的方法都必须在子类中实现.接口中只能存在事件,代理,属性(C#)和方法.一个类可以实现多个接口.
抽象类:
只有抽象方法必须由子类实现.Abstract类可以有实现的常规方法.Abstract类还可以在Events,Delegates,Properties和Methods旁边有类变量.由于C#中不存在多重继承,因此类只能实现一个抽象类.
所以,即使这种差异也无法解释这个问题
1)如果你有一个只有抽象方法的Abstract类怎么办?这与界面有什么不同?
2)如果你在界面中有一个Public变量,那么它与Abstract Class有什么不同呢?
所以任何解释都会有所不同.
虽然您的问题表明它是针对“一般 OO”,但它似乎确实关注这些术语的 .NET 使用。
作为一般的面向对象术语,这些差异不一定是明确定义的。例如,有些 C++ 程序员可能持有类似的严格定义(接口是不能包含实现的抽象类的严格子集),而有些人可能会说具有某些默认实现的抽象类仍然是一个接口,或者是一个非抽象类。类仍然可以定义接口。
事实上,有一种称为非虚拟接口 (NVI) 的 C++ 习惯用法,其中公共方法是“thunk”到私有虚拟方法的非虚拟方法:
http://www.gotw.ca/publications/mill18.htm http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface
| 归档时间: |
|
| 查看次数: |
7187 次 |
| 最近记录: |