2.1.3抽象类和接口

    技术2022-07-11  96

    抽象类

    如何定义抽象方法:需要使用一个关键词:abstract

    abstract class Person { public abstract void run(); }

    特点:无法实例化抽象类。

    Person p = new Person(); // 编译错误

    继承了抽象类的子类必须实现所有抽象类中的方法。

    接口

    如果一个抽象类没有属性只有方法,则可以将其定义为接口。 接口比抽象类还要抽象。因此接口中所有方法都是抽象方法。 如何定义接口:使用关键字interface

    interface Person { void run(); String getName(); }

    如何实现接口:使用关键字implements

    class Student implements Person { private String name; public Student(String name) { this.name = name; } @Override public void run() { System.out.println(this.name + " run"); } @Override public String getName() { return this.name; } }

    一个子类只能有一个父类,但一个类可以实现多个接口。

    接口与接口之间的继承:

    interface Hello { void hello(); } interface Person extends Hello { void run(); String getName(); }

    default关键字: 在接口中,没有关键字修饰的都是抽象方法,都不能实现。 如果要实现接口中的方法,需要用default关键字。

    interface Person { String getName(); default void run() { System.out.println(getName() + " run"); } }

    实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

    抽象类和接口的区别

    继承:接口可以实现多个子类。但抽象类只能有一个子类。字段(属性):接口没有属性只有方法。抽象类可以有属性。抽象方法:接口和抽象类中都有抽象方法,且抽象方法不能实现,但在继承的类中需要覆写。非抽象方法:在接口中可以定义default方法,此方法可以进行实现,并且可以不用覆写。在抽象类中可以定义非抽象方法,可以实现,非抽象方法都可以不用覆写。
    Processed: 0.015, SQL: 9