编辑代码

class Main {
	public static void main(String[] args) {
        // 多态 polymorphic
        // 方法或对象具有多种形态。是面向对象的第三大特征。
        // 编写一个程序,Master 类中有一个 feed(喂食)方法,可以完成主人给动物喂食物的信息
		
// 多态的具体体现
//1、方法的多态 :重写和重载就体现了多态 (之前已经多次练习)

//2、对象的多态(核心,重难点)
// 1)一个对象的编译类型和运行类型可以不一致
// 2)编译类型在定义对象时,就确定了,不能改变
// 3)运行类型是可以变化的
// 4)编译类型看定义时 = 号的左边,运行类型看 = 号的右边,
// 案例:
// Animal animal = new Dog(); // animal 编译类型是 Animal , 运行类型 Dog
// animal = new Cat(); // animal 的运行类型变成了 Cat, 编译类型依旧是 Animal  

        Animal animal = new Dog(); // animal 编译类型是 Animal , 运行类型 Dog
        //运行到这行时,animal 的运行类型是Dog :这个是Dog的cry
        animal.cry(); // 小狗汪汪叫

        animal = new Cat();
        animal.cry(); // 小猫喵喵叫
        
	}
}


public class Animal{
    public void cry(){
        System.out.println("Animal cry() 动物在叫。。。");
    }
}

public class Cat extends Animal{
    public void cry(){
        System.out.println("Cat cry() 小猫喵喵叫。。。");
    }
}

public class Dog extends Animal{
    public void cry(){
        System.out.println("Dog cry() 小狗汪汪叫。。。");
    }
}