小菜是一个学生,但同时也是一个人
小菜是一个对象,这个对象既有学生形态也有人类形态。
┅个对象拥有多种形态这就是:【对象的多态性】
代码当中体现多态性,其实就是一句话:父类引用指向子类对象
1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁没有则向上找。
2.间接通过成员方法访问成员变量:看该方法属于誰优先用谁,没有则向上找
//子类没有覆盖重写,就是父 //子类如果覆盖重写就是子
看new的谁僦优先用谁,没有则向上找
口诀:编译看左边,运行看右边
无论右边new的时候换成那个子类对象,等号左边调用方法都不会变化
1.对象的向上转型,其实就是多态的写法:
向上转型一定是安全的没有问题的,正确的但是有一个弊端,对象一旦向上转型为父类那么僦无法调用子类原有的内容。
解决方法:用对象的向下转型【还原】
2.对象的向下转型其实是一个[还原]的动作。
这将会得到一个boolean值结果也就是判断前面的对象不能当作后面类型的实例。