抽象类和抽象方法：
当我们在做子类共性特征功能抽取的时候，有些方法在父类中是没有具体功能体现的。
这时候就需要抽象类了。
Java中，如果一个方法，没有方法体，就应该被定义为抽象方法。
如果类中有了抽象方法，那么这个类就必须定义为抽象类
抽象类和抽象方法必须使用abstract关键字进行修饰：
抽象类：
public abstract class 类名{
    抽象方法：
    public abstract void 回家();
}
特点：
    1、抽象方法必须存在于抽象类中，但是抽象类不只有抽象方法，还有具体方法。
    2、抽象类是不能实例化，也就是不能创建对象的。
    3、抽象方法存在的唯一意义，就是被子类重写。
    4、抽象类的子类，要么重写父类的抽象方法，要么子类也必须是抽象类。

案例需求：
    定义猫类(Cat)和狗类(Dog)
    猫的成员方法：eat(){猫吃鱼}  drink(){喝水...}
    狗的成员方法：eat(){狗吃肉}  drink(){喝水...}
实现步骤：
    1、猫类和狗类存在共性特征，应该向上抽取出一个动物类Animal
    2、父类Animal中不能把eat方法具体描述清楚，所以定义成抽象方法。
    3、抽象方法需要存活在抽象类中，那么就要将Animal定义为抽象类。
    4、让Cat和Dog分别继承Animal，并且抽象eat()方法
    5、编写测试类，创建Cat和Dog对象，分别调用eat()和drink()方法进行测试。