抽象类与接口的区别

xiaoxiao2021-02-28  60

抽象类和接口的区别

不同

No区别抽象类接口1关键字abstract classinterface2组成构造方法、普通方法、抽象方法、static方法、常量、变量抽象方法、全局变量3子类使用class 子类 extends 抽象类class 子类 implements interface4关系抽象类可以实现多个接口接口不能继承抽象类,却可以继承多个父接口5权限可以使用各种权限只能使用public6限制单继承局限没有单继承局限

相同

No相同说明1子类抽象类和接口都必须有子类,子类必须要覆写全部的抽象方法2实例化对象依靠子类对象的向上转型进行对象的实例化

JDK8新特性

JDK8对接口进行了增强,新增了默认方法和静态方法。

默认方法:允许接口中添加default修饰的非抽象方法,且允许在接口实现类中进行重写覆盖,通过接口实现类的实例化对象进行方法调用。静态方法:允许接口中添加static修饰的非抽象方法,只能通过接口名来进行方法调用。

定义接口:

public interface Speakable { // 默认方法 default void sayHi() { System.out.println("Hi form interface!"); } // 默认方法 default void sayHello() { System.out.println("Hello form interface!"); } // 静态方法 static void sayBye() { System.out.println("Bye!"); } }

定义接口实现类:

public class Person implements Speakable{ // 覆盖接口默认方法 @Override public void sayHello() { System.out.println("Hello from class!"); } public static void main(String[] args) { Person person = new Person(); person.sayHello(); person.sayHi(); // 调用接口静态方法 Speakable.sayBye(); } }

输出:

Hello from class! Hi form interface! Bye!

总结

从设计角度来说:接口是为了规范类的行为,是“like-a”的关系,抽象为了类的复用,是“is-a”的关系。 抽象类支持的功能比接口更多,但有单继承局限,优先考虑使用接口。

转载请注明原文地址: https://www.6miu.com/read-2613237.html

最新回复(0)