相同点:
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
网友评论