c#接口interface和抽象类abstract的区别

2023-03-30  本文已影响0人  江南极客

相同点:

1、都可以被继承

2、都不能被直接实例化

3、都可以包含方法的声明

不同点:

1、接口不能包含成员变量,也就是字段,抽象类可以包含成员变量

2、接口不能包含构造函数,抽象类可以包含抽象函数

3、接口可以多继承,抽象类只能单继承

4、接口子类必须实现所有声明的方法,抽象类子类必须实现所有的抽象方法(必须是共有的),以override重写的方式来实现抽象方法,普通方法可以不实现(不带abstract修饰的)

5、接口方法声明默认public,不能用其它修饰符修饰,否则编译会报错,抽象类的普通方法可由其它访问修饰符修饰,抽象方法必须是public

另外:

一个类只能继承一个抽象类,能继承多个接口,抽象类可以看做亲爹,只能有一个,接口可以看做干爹,可以有多个。

接口可以看做是一个约定,其中定义了类或结构体继承之后需要实现的功能。

接口一旦被继承,派生类就必须实现接口中的所有成员,除非派生类本身也是抽象类。

接口中可以包含方法、属性、事件、索引器。

一个接口可以继承另一个接口,例如接口1继承接口2,一个类继承接口1时,必须同时实现接口1和接口2的所有成员。

视频解析地址:

https://www.bilibili.com/video/BV1Aq4y1T7uT/?vd_source=fe3df5734b9eeda1b10a81178055917f

上一篇下一篇

猜你喜欢

热点阅读