1.一个对象的编译类型和运行类型可以不一致
2.编译类型在定义对象时,就确定了,不能改变
3.运行类型是可以变化的。
4.编译类型看定义=号的左边,运行类型看=号的右边
单词:
Animal =动物 Dog =狗 Cat= 猫
Dog子类 extends Animal父类
Animal animal = new Dog(); // animal 编译类型是Animal,运行类型是Dog
//animal是对象引用,指向子类对象Dog
animal = new Cat(); //animal 的运行类型变成Cat,编译类型仍然是Animal