原文地址:https://mp.weixin.qq.com/s/Iupw6xKd81k77dAPUBDm9Q

作者:码上实战

定义:一个是 abstract,一个是 interface

派生方式:抽象类单继承,接口多实现。子类继承抽象类通过 extends,单继承。抽象类实现接口通过 implement,多实现,接口继承接口通过 extedns

实例化:抽象类可以有构造方法,接口不能有构造方法

属性:抽象类可以定义有任意变量常量,接口中定义属性只能是(public)静态常量

实现方式:抽象类可以有普通方法,接口有默认方法和静态方法(JDK 1.8)

设计:抽象类是对一组类的共同特征进行抽象,是子类的模板(is-a),接口是对行为的抽象,是一种行为的规范和约束(like-a)

https://xmind.ai/share/d82j27rz?xid=WsOmyocs

随着JDK的不断迭代,抽象类和接口的区别已经有了些许改变,你是否还停留在JDK 7 的答案呢?

定义

public abstract class A {

}

public abstract interface A {

}

派生方式

public abstract class A {

}

public class B extends A {

}

public interface A {

}

public interface B {

}

public interface C extends A {

}

public class D implements B,C {

}

实例化