Java学习(十三):抽象类和接口的区别,各自的优缺点

时间:2023-02-24 20:36:42

Java抽象类和接口的区别点

1、接口只能含有抽象的方法,抽象类中可以包含部分的实现方法。

2、接口只能定义静态常量,默认为public static final,并且需要显示初始化。抽象类中可以定义普通的成员变量。

3、接口不能含构造方法,抽象类可以有自己的构造方法(被继承使用)。

4、接口和抽象类都无法被实例化。

5、一个类可以实现多个接口,只能继承一个抽象类(只能继承一个类,单继承)

6、一个类实现接口时需要实现所有的方法。继承一个抽象类的时候需要实现所有抽象方法,否则同样需要声明为抽象类。(如果一个类含有抽象方法,则这个类必须被声明为抽象类)

7、如果向一个抽象类里加入一个新的具体方法时,它的所有子类都自动得到了这个新方法。如果向一个接口添加一个新的方法,则实现该接口的所有类就必须同步修改来实现这个方法,否则无法编译通过。

8、抽象类的实现只能由它的子类给出,而Java是单继承的,所以抽象类作为类型定义工具的效能大打折扣。任何实现一个接口的类都可以具有这个接口的类型,而一个类可以同时实现多个接口,从而这个类就有了多种类型。