什么是抽象类
用abstract关键字修饰的类就是抽象类
注意点
- 抽象类和抽象方法都需要用 abstanct关键字修饰
- 抽象类中可能没有抽象方法 但是抽象方法一定在抽象类中
- 抽象类不能被实例化 但有构造函数
- 抽象类用于继承 子类必须全部实现抽象类提供的抽象方法(抽象类是一个规范 一条规矩 必须遵守)
- 抽象方法只需要声明而不需要实现
抽象类的意义
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();
}
}
输出
小结
- 通过abstract定义的方法是抽象方法 它只有定义 没有实现 抽象方法定义了子类必须实现的接口规范
- 从抽象类继承的子类必须实现 全部方法