javaalready

java 中的抽象类、接口

2022-02-10  本文已影响0人  暴躁程序员

抽象类 abstract

在继承中,父类(抽象类)定义抽象方法签名(无方法体),且子类必须重写父类的抽象方法
即:父类(抽象类)定义了方法规范,子类必须执行父类(抽象类)定义的方法规范

在父类(抽象类)中,定义抽象方法签名 methodName()

abstract class ClassName {
    public abstract void methodName();
}

在子类中,必须重写 methodName() 方法

class ChildrenClassName extends ClassName {
    @Override
    public void methodName() {
        // 重写的方法体
    }
}

特点:抽象类无法被实例化成对象,只能用于继承

接口 interface

  1. 类实现接口
    接口定义的方法默认的都是 public abstract 公共抽象方法,且接口中不能定义属性字段
    即:接口只是定义了方法规范,实现接口的类必须执行接口定义的方法规范

定义接口(方法前的 public abstract 修饰词默认省略)

interface InterfaceName {
    void method1();
    String method2();
}

定义实现接口的子类 (使用 implements 关键词来实现接口)

class ClassName implements InterfaceName {
    @Override
    public void method1() {
        // 重写的方法体
    }

    @Override
    public String method2() {
        // 重写的方法体
    }
}

一个类不可继承多个类,但是可以实现多个接口

class ClassName implements InterfaceName1 InterfaceName2 InterfaceName3{}
  1. default 关键词,解决接口新增方法必须重写所有实现它的子类的问题
    因为接口的方法,默认的都是 public abstract 公共抽象类,所以所有实现此接口的子类必须重写此接口的所有方法,所以 按需重写很重要

在接口中使用 default 修饰的方法,可以不必重写

interface InterfaceName {
    default void method1(); 
    String method2();
}
  1. 接口的继承
    和class继承类似,一个interface可以通过 extends 关键词继承另一个interface
interface InterfaceName1 {
    void method1();
}

interface InterfaceName2 extends InterfaceName1 {
    void method2();
}

特点:接口无法被实例化成对象

上一篇 下一篇

猜你喜欢

热点阅读