抽象类和接口【超全总结】

53 阅读1分钟
抽象类和interface

抽象类和interface都是对对象行为的定义。

抽象类通常使用模板方法模式来实现公用方法,并在抽象方法中定义子类的特定行为。

interface是将类的功能定义在接口中,这种接口相对于抽象类来说更加通用,多个类可以实现同一个接口。

实例化

抽象类和interface都不可以被实例化。

只要类中有抽象方法,该类就是抽象类,所以子类要实现抽象类的所有的抽象方法。

变量

abstract类的变量可以是private、protected、public的,也可以被static和final修饰,使用final修饰必须要给初始值,abstract类的变量的默认访问修饰符是default。

interface的变量只能是public final static的。

方法

abstract类中的方法可以是抽象方法,也可以是非抽象方法,抽象方法没有方法体,默认访问修饰符号是default。

interface的方法一般只能是抽象方法,且默认访问修饰符是public的,也可以有默认方法(default修饰) 和 私有方法(private修饰),但是private方法只能被默认方法调用。

默认方法的出现是为了解决接口新加一个方法定义,实现该接口的所有类都要实现该方法,默认方法是有方法体的,如果实现类不实现默认方法,它将继承该方法。

abstract类和interface中的非抽象方法都是可以被static修饰的。

继承

abstract类还是类的概念,只支持单继承。

interface是支持多继承的,即,一个接口可以继承多个接口。