转载

【Java】接口和抽象类有什么区别

从方法上而言

接口中的方法默认都是 public 或者是 default

使用 public 修饰的方法不允许存在方法体,使用 default 的方法不允许不存在方法体

使用 default 的方法在实现类中可以不被 Override

default 关键字存在于 jdk1.8 之后,然而却存在下面一个情况

default void print() {
    System.out.println("Hello");
}

在编译后会变成

public void print() {
    System.out.println("Hello");
}

从属性上而言

接口中的属性默认都是 static final 修饰的

抽象类中的属性与普通类中的无异

从父子关系上而言

类可以实现多个接口,而类只能继承一个类

从使用上而言

实现一个接口就必须实现所有非default修饰的方法,继承一个类必须重写所有抽象方法

原文  https://segmentfault.com/a/1190000020418454
正文到此结束
Loading...