什么是抽象类

用abstract关键字修饰的类就是抽象类

注意点

  1. 抽象类和抽象方法都需要用 abstanct关键字修饰
  2. 抽象类中可能没有抽象方法 但是抽象方法一定在抽象类中
  3. 抽象类不能被实例化 但有构造函数
  4. 抽象类用于继承 子类必须全部实现抽象类提供的抽象方法(抽象类是一个规范 一条规矩 必须遵守)
  5. 抽象方法只需要声明而不需要实现

抽象类的意义

class Person {
    public void run() { … }
}

class Student extends Person {
    @Override
    public void run() { … }
}

class Teacher extends Person {
    @Override
    public void run() { … }
}

如果说父类(Person)本身不需要实现任何功能 仅仅是为了定义方法签名 让子类去覆写
那么 可以把父类定义为抽象类

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

示例

抽象类

package com.oop.demo11;

// 定义一个抽象类
// 相当于 规范 规矩

/**
 * 不能被实例化
 * 被abstract修饰的方法就是抽象方法
 * 抽象类用于继承  子类必须全部实现父类的方法  抽象类是一个规范 一条规矩 必须遵守
 * 抽象类中可能没有抽象方法 但是抽象方法一定在抽象类中
 */
public abstract class Income {
    public abstract void getIncome();
}

子类

package com.oop.demo11;

public class Saray extends  Income {
    @Override
    public void getIncome() {
        System.out.println("继承了Income抽象类方法");
    }
}

测试

package com.oop;


import com.oop.demo11.Saray;

public class Applcation {
    public static void main(String[] args) {
        Saray saray = new Saray();
        saray.getIncome();
    }
}

输出
Java-抽象类_子类

小结

  1. 通过abstract定义的方法是抽象方法 它只有定义 没有实现 抽象方法定义了子类必须实现的接口规范
  2. 从抽象类继承的子类必须实现 全部方法
即使再小的帆也能远航