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)抽象类是一种模板、接口是一种行为规范。

posted @ 2022-04-17 10:08  何-某人  阅读(126)  评论(0)    收藏  举报