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修饰的方法,继承一个类必须重写所有抽象方法

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理