接口与抽象类的区别

    科技2022-08-16  112

    ##接口与抽象类的区别

    在多态中,父类的方法体往往是多余的,因此可以将其方法定义为抽象方法。

    public abstract void move();//一个方法没有方法体,则该方法为抽象方法

    而一般情况下,拥有抽象方法的类被称为抽象类,一个抽象类中也可以没有抽象方法,但有abstract关键字修饰。抽象类和普通类主要有以下区别:

    a、抽象类有abstract关键字修饰,而普通类没有;

    b、抽象类不能创建对象,而普通类可以;

    c、抽象类可以有抽象方法,而普通类一定没有抽象方法;

    d、抽象类不允许用final修饰。 

    public abstract class Mammal {

               抽象类的内容

    }

    如果一个源文件中的方法“全是”抽象方法,则可以定义为接口。

    public interface IMammal extends IA,IB{           int AGE = 12;           void move();           void breathe();           void eat(); }

    接口和抽象类在定义和内容上主要有以下区别:修饰抽象类的关键字为abstract,修饰接口的关键字为interface;抽象类中可以有构造方法供子类调用,但是接口中没有构造方法;抽象类只能实现单继承,而接口可以继承多个接口;继承实现抽象类使用关键字extends,接口则使用implements;抽象类可以定义任何合法的成员变量,而接口只能定义public static final的常量;抽象类可以定义任意合法的方法;接口中只能定义抽象方法,JDK8.0以后可以定义多个static或default。

    接口和抽象类也有一些相同的地方:抽象类和接口都不允许创建对象;接口或抽象类作为父类时,一个子类如果没有实现完父类中的所有抽象方法,则必须将子类定义为抽象类。

    Processed: 0.008, SQL: 9