1. 多态 满足继承关系,父类引用指向子类对象
- 编译时多态 方法重载
- 运行时多态 程序运行时动态决定调用哪个方法
2. 向上转型:也叫隐式转型、自动转型
- 父类引用指向子类实例,如People p = new Man()
- 可以调用子类重写父类的方法以及父类派生的方法
- 无法调用子类独有的方法
- 父类中的静态方法无法被子类重写,所以向上转型后,只能调用父类原有的静态方法
- 如果想要调用子类自己的无法重写父类的静态方法,必须再经过向下转型后,才能调用
3. 向下转型:强制类型转换
- 子类引用指向父类对象,此处必须进行强转,可以调用子类特有的方法
- 必须满足转型条件才能进行强转
4. instanceof运算符:判断对象是否满足某个特定类型,返回true / false
- 判断左边的对象是否是右边类型的实例
5. 举例
// 子类对象做参数传入进来,先进行向上转型,判断后再向下转型,可以调用特有方法
public void feed(Animal animal) {
if(animal instanceof Cat) {
Cat temp = (Cat) animal;
// 此时可以调用Cat的继承下来的方法和特有方法
} else if(animal instanceof Dog) {
Dog temp = (Dog) animal;
// 此时可以调用Dog的继承下来的方法和特有方法
}
}