在C#中,类,抽象类和接口之间有什么共同点和不同点?
发布网友
发布时间:2022-05-10 19:12
我来回答
共2个回答
热心网友
时间:2023-10-23 23:44
1.接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。
如果创建的功能将在大范围的全异对象间使用,则使用接口。
2.抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法。
相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。
都是面向抽象编程的技术基础,实现了诸多的设计模式。
不同点
:接口支持多继承;抽象类不能实现多继承。
接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
热心网友
时间:2023-10-23 23:45
人
是一个类,
很具体
生命
是个抽象类,必须指定子类是什么才行否则无法"生"出一个生命,只有指定子类以后生出人或者狗.
畜生是一个接口,
所有实现了畜生行为的东西都是畜生,但是谁也不知道"畜生"到底是什么,因为什么都行,只要有畜生这个接口需要的方法,比如无耻下流之类的...