文章目录
一.什么是多态?
一个对象有不同的形态。
比如:每个人在不同的场景有着不同的身份
二.使用多态的前提(重点)?
- 子父类继承关系。
- 接口实现关系。
- 必须有方法的重写。
- 父类引用指向子类对象(父类 对象名 = new 子类())。
三.注意!
多态在默认情况下只能调用子类重写的方法,不能调用子类特有方法。
四.多态成员变量的访问特点!
等号左边是谁就调用谁的成员变量
五.多态成员方法的访问特点!
看new的是谁就调用谁的成员方法(一定是子类重写的!不能是子类特有的方法!!!!!!!)。
六.为什么要用多态?
那我们为什么要用多态呢??
多态的好处不是体现在new对象的,而是体现在方法的参数传递上(参数为父类类型,接受任何它的子类)。
原始方法:类名 对象名 = new 类名(); — 等号两边是一样的。
原始方法的好处:即可以调重写的,还可以调子类特有的方法!
原始方法的坏处:扩展性差–体现在方法参数上!
多态方式:父类引用指向子类对象。
多态方法的坏处:不能直接调用子类特有的方法。
多态方法的好处:扩展性强!
七.多态的转型
1.向上转型
1.定义格式
父类 对象名 = new 子类()----默认的。
2.向上转型的坏处:不能调用子类特有方法。
2.向下转型(强转)
1.定义格式
子类 对象名 = (子类)父类。
2.向下转型的好处:能调用子类特有方法。
3.向下转型的问题:容易出现转型失败的问题。classCastException
4.向下转型问题解决:对象名 insetanceof 类名 -->判断前面的对象是不是属于后面的类