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() 小狗汪汪叫。。。");
}
}