抽象类和接口的对比
抽象类 接口
实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。
构造器 可以有构造器 无构造器
修饰符 抽象方法可以有public、protected和default这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法 抽象方法可以有main方法并且我们可以运行它 没有main方法
多继承 抽象类可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 要快些 慢些
(1)如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类。
(2)如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
(3)如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。