Java 抽象类和接口的区别(结合jdk8新特性)
1.语法层面上的区别
抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
ps:在jdk8之后,接口可以有静态方法(有方法体),也可以通过default 关键字定义普通方法(有方法体)
public interface Test02 {
// 变量默认是public static final
int i1 = 0;
// 接口可以实现静态方法——jdk8新特性
public static void hello() {
System.out.println("hello");
}
// 通过default 实现普通方法——jdk8新特性
public default void hello2() {
System.out.println("helle02");
}
}
2.设计层面上的区别
(1)抽象类是对事物的抽象、接口是对行为的抽象。
比如,所有的飞机可以有一个抽象飞机类,同时,飞是一个接口,接口实现了fly()方法,可以让实现者飞行。
(2)抽象类是一种模板、接口是一种行为规范。

浙公网安备 33010602011771号