面试题-抽象类与接口的区别
一、从两者形态来区分
A 抽象类可以给出一些成员的实现,接口则不可以给出成员的实现。
B 抽象类的成员可以被子类部分实现,接口的成员则需要实现类全部实现。
C 一个类只能继承一个抽象类,但可以实现多个接口。
二、从设计角度来区分
A 类是对对象的抽象,抽象类是对类的抽象,接口是行为的抽象。
B 如果行为跨越不同类型的对象,可以使用接口。对于一些相似的类对象,可以用继承抽象类。
C 抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口根本就不知道子类的存在,方法如何实现还不确定。抽象类往往是通过重构得来的。抽象类一般是自底向上抽象出来的,接口则是自顶向下设计出来的。
三、关于抽象类和接口的选择
A. 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
B.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能单元,则使用接口。
C.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。如果要设计大的功能单元,则使用抽象类。
D.抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
浙公网安备 33010602011771号