接口和抽象类

94 阅读2分钟

第8题(2023/9/13)

抽象类和接口的区别

答:

初级

(1)抽象类只能继承一个,而接口可以实现多个

(2)抽象类中可以有抽象方法,也可以有实现方法,而在接口中只能有抽象方法

(3)在接口中定义成员变量时,只能定义public static final的成员变量;而抽象类中的成员变量可以是任意类型的

高级

(1)设计目的

抽象类的设计目的是代码的复用,当不同的类都含有相同的行为时,可以将他们共同的行为进行抽取,形成一个抽象类,让这些类都派生于此类,所以也可以说抽象类是先有子类,因为抽象类中可以有未实现的方法,所以抽象类不允许被实例化。

接口的设计目的在与类的行为的约束(接口的定义可以定义了类有什么样的行为,除了自身的成员方法之外的行为)接口只是约束了行为的有无,并不关心行为的具体是实现。所以我们在实现接口后要实现接口中的抽象方法。

(2)本质

抽象类是对于类本质的抽象,是 属于否 的关系,抽象类包含并实现了子类的通用特性,将子类存在差异化的特性进行抽象,交由子类去实现。

接口的本质是对行为的抽象,是 有否 的关系,接口的核心是定义行为,至于实现接口的主类是谁,具体实现是什么,接口并不关心。

对于使用场景来说,如果我们更关注一个类的本质的时候,我们使用抽象类;当我们更关注这个类的行为时,我们使用接口。