一、 提出新问题
定义Animal作为父类,其作用是抽象子类的共性
但是存在子类中方法未重写的情况,此时调用子类中的方法会返回父类中的方法体。
但是父类应当是抽象的共性集合体,不具备实际意义,因此应当有所限制。
二、抽象类的衍生
抽象的目的是为了概括(解释)具体事物
抽象——————具体
[动物]—————[狗]
// 抽象类
public abstract class Animal{}
// main函数
public class Application{
public static void main(String[] argss){
// 报错,因为Animal被定义为了抽象类,不能创建实例对象
Animal animal =new Anilmal();
// 而抽象类的子类可以创建实例
Dogs dog =new Dogs();
}
}
本质上Animal类不会有人使用,它是一个抽象的,它抽取了子类(猫狗)的共性(吃饭、睡觉、生病)作为使用。
三、抽象方法和抽象类的使用
抽象方法——————不能有实际的意义
由于动物的叫声有很多种,没有办法具体到某一指定叫声,因此是抽象的。
抽象方法一定基于抽象类,需要提前用abstract声明类是抽象类!
public abstract class Animal{
public abstract void barking();
}
public class Dogs extends Animal{
// IDEA中Alt+Enter快速重写方法
public void barking(){
System.out.println("吱吱吱");
}
}
当一个类继承了一个抽象类的时候,该子类必须重写父类中的所有抽象方法。
IDEA中可以通过:
Alt+Enter——>Implement methods——>OK
进行抽象方法的自动重写。