C#abstract class和interface有什么区别?
发布网友
发布时间:2022-05-14 15:47
我来回答
共4个回答
热心网友
时间:2023-10-23 02:04
1.抽象类(abstract class)
抽象类是一种特殊的类,有如下的特点:
.抽象方法制作声明,不包含具体的实现,可以看做是没有重写的虚方法.
.抽象类不能被实例化.具有其他类相同的特性.
.抽象类可以没有抽象方法和抽象属性,但是一旦有了抽象方法,就一定要把这个类声明为抽象类.
.具体派生类必须要覆盖基类的抽象方法.
.抽象类可以派生自另一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果覆盖,则其他派生类也必须覆盖他们.
2.接口(interface)
接口是引用类型的,类似抽象类但又不同于抽象类.
.不能被实例化.
.只能包含实现的方法声明.
.成员可以包括方法,属性,索引器和事件.
.接口中不能包含常量,字段(域),构造函数,析构函数或者静态成员.
.接口中的所有成员默认为是public,因此接口中不能有private修饰符.
.派生类必须实现接口中的所有成员.
.一个类可以直接实现多个接口,接口之中用逗号隔开.
.一个接口可以有多个父接口,实现该接口的类必须实现所有接口中的所有成员.
热心网友
时间:2023-10-23 02:04
~我发现面试都喜欢这样的题目...
我不认为继承抽象就不能实现CALLBACK...只不过意义不大...应该
但抽象和接口确实不是一个概念...首先完全抽象和假的抽象(都实现了,就个抽象的框)~怎么说也都是类...实现的抽象方法是OVERRIDER~
而接口不是类啊....协议或者规则嘛...(所以你说接口能作用值和引用不是完全正确)
其实面试官问这样的问题...只是希望你回答 单 或者 多 ~就可以了...(这个个人认为)
感觉高明的面试官不会问这种问题...问这种问题就像"公版"题罢了...点个点就好了...说得太麻烦了...就怕把面试的人弄晕了~
热心网友
时间:2023-10-23 02:05
接口回调实现多态,但是很显然抽象类也可以回调,有时候用抽象类反而更简洁
热心网友
时间:2023-10-23 02:05
思路很清晰