现在已经是二刷多态了,虽然感觉懂了,但是又没有完全懂。在此先记录下当前理解,等日后大彻大悟的时候再回来补坑
**多态的含义:**就是一种事物可以呈现多种形态。有动物这个父类,有猫,狗,猪这些子类。你把动物的模板建好,里面只有吃这个功能。但是猫,狗,猪吃的东西并不一样,所以就要重写动物类的方法,实现自己独特的功能。那么对于动物类来说,自己就有了吃的多种形态。带入理解理论就是:同一种方法可以根据发送对象的不同而采用多种不同的行为方式。
//引用类型 实际类型
Animal cat = new Cat();
-
其实也可以这样理解:实际类型去调用引用类型的模板,然后再根据自己的实际情况来实现具体的作用
多态的实现条件:
-
有继承关系
-
有方法重写
-
父类的引用指向子类
多态的注意事项:
- 多态是方法的多态,与属性无关
- 成员变量编译执行时都是看左边的类型(所以说多态与属性无关,因为子类无法影响到父类)
- 成员方法编译时看左边(就是在敲代码时,左边类型里有的方法你才能去用,否则就会报错),运行时看右边(左边有的方法但是右边类型把方法重写了,所以结果还是右边的类型决定。如果右边没有这个方法那就不会影响到)
-