该原创文章首发于微信公众号“字节流动”
本篇从 8 个方面介绍一下,接口与抽象类的区别。
抽象
接口与抽象类具备抽象多类对象相同属性特征的特点,均可作为一种规范。
属性(成员变量)
抽象类中的成员变量与普通的 Java 类声明一样;
接口中的成员变量只能是 public static final 类型的。
方法实现
抽象类可以有方法实现,也可以用 abstract 关键字将其抽象化;
接口不存在方法实现,所有的方法均为 public 抽象方法。
实例化
抽象类有构造函数,但不能实例化,除了不能实例化之外,与普通的 Java 类没有区别;
接口没有实例化的概念,无构造函数。
继承
抽象类只能有一个父类,但可以实现多个接口;
一个接口可以继承多个接口。
子类实现
子类通过 extends 关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有抽象方法的实现;
子类通过 implements 关键字来实现接口,需要提供接口中所有声明方法的实现。
访问修饰符
抽象类中抽象方法可以有 public、 protected 和 default 这些修饰符;
接口方法默认修饰符是 public ,不可以使用其它修饰符。
访问速度
同等条件下,对抽象类方法的访问速度快于接口,接口需要花时间寻找类中实现的方法。
联系与交流
微信公众号
个人微信