Java之路:抽象类与接口对比

先上图:
在这里插入图片描述
下面详细说下:

1、相同点

(1)都是抽象类型;

(2)都可以有实现方法;抽象类中可以实现普通方法,接口中可以实现默认方法(Java 8)。

(3) 都可以不需要实现类或者继承者去实现所有方法。(以前不行,现在接口中默认方法不需要实现者实现)

2、不同点

(1)抽象类中可以有常量(final)、全局常量(public static final)和变量,而接口中只能有全局常量(public static final);

接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值;抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

(2)抽象类权限可以使用各种权限,而接口中只能使用public

(3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

(4)抽象类的子类可以通过extends关键字继承一个抽象类;接口的子类可以通过implements关键字实现多个接口。

(5)一个抽象类可以实现多个接口,而接口不能继承抽象类,但可以继承多个接口。

(6) 抽象类和接口所反映出的设计理念不同。其实抽象类表示的是"is-a"关系,接口表示的是"like-a"关系。

猜你喜欢

转载自blog.csdn.net/qq_43555323/article/details/84892944