在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,那么该类必须定义为抽象类
1.抽象特点
1.1代码演示
1 | package Java_Abstract; |
1.2特点
抽象类和抽象方法必须使用abstract关键字修饰
public abstract class 类名 {}
public abstract void 方法名();
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
抽象类不能实例化
抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫做抽象类多态
抽象类的子类
要么重写抽象类中的所有抽象方法
要么就是抽象类
2.抽象类的成员特点
2.1代码演示
1 | package Java_Abstract2; |
2.2成员特点
成员变量
可以是变量
也可以是常量
构造方法
有构造方法但不能实例化
那么,构造方法的作用是什么呢?用于子类访问父类数据的初始化
成员方法
可以有抽象方法:限定子类必须完成某些动作
也可以有非抽象方法:提高代码复用性
3.利用抽象类的猫和狗案例
3.1代码演示
1 | package Java_Abstract3; |
4.抽象类名当形参和返回值
4.1代码演示
1 | package Java_Abstract4; |
4.2总结
- 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象