抽象类和接口_面试题

相同

1、都可以被继承

2、都不能直接被实例化

3、都可以包含方法声明且都没有实现

4、派生类必须实现未实现的成员

不同点

1、接口可以被多重实现,抽象类只能被单一继承。

2、接口可以用于支持回调,继承并不具备这个特点。

3、抽象类可以定义字段、方法、属性、事件、索引器的实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。

4、接口中的成员访问类型默认为公共的,不能有其他的访问修饰符修饰。

5、定义的关键字不一样,抽象类需要使用abstract,而接口则使用interface。

抽象类和接口的使用

1、抽象类表共性(常应用在具有相同的行为和特征中),而接口则表规范(用于定义一种行为)。
2、抽象类主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。
3、如果要设计大的功能单元,则使用抽象类;如果要设计小而简练的功能块,则使用接口。
4、如果预计要创建组件的多个版本,则创建抽象类。接口一旦创建就不能更改。如果需要接口的新版本,必须创建一个全新的接口。
5、如果创建的功能将在大范围的全异对象间使用,则使用接口;如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
6、分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”。为外部提供调用或功能需要扩充时优先使用接口。
7、好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。

 

posted @ 2023-01-16 11:47  驼七  阅读(69)  评论(0)    收藏  举报