面向对象三大特征之一多态

一.什么是多态?

一个对象有不同的形态。
比如:每个人在不同的场景有着不同的身份

二.使用多态的前提(重点)?

  • 子父类继承关系。
  • 接口实现关系。
  • 必须有方法的重写。
  • 父类引用指向子类对象(父类 对象名 = new 子类())。

三.注意!

多态在默认情况下只能调用子类重写的方法,不能调用子类特有方法。

四.多态成员变量的访问特点!

等号左边是谁就调用谁的成员变量

五.多态成员方法的访问特点!

看new的是谁就调用谁的成员方法(一定是子类重写的!不能是子类特有的方法!!!!!!!)。

六.为什么要用多态?

那我们为什么要用多态呢??
多态的好处不是体现在new对象的,而是体现在方法的参数传递上(参数为父类类型,接受任何它的子类)。

原始方法:类名 对象名 = new 类名(); — 等号两边是一样的。
原始方法的好处:即可以调重写的,还可以调子类特有的方法!
原始方法的坏处:扩展性差–体现在方法参数上!

多态方式:父类引用指向子类对象。
多态方法的坏处:不能直接调用子类特有的方法。
多态方法的好处:扩展性强!

七.多态的转型

1.向上转型

1.定义格式

父类 对象名 = new 子类()----默认的。

2.向上转型的坏处:不能调用子类特有方法。

2.向下转型(强转)

1.定义格式

子类 对象名 = (子类)父类。

2.向下转型的好处:能调用子类特有方法。
3.向下转型的问题:容易出现转型失败的问题。classCastException
4.向下转型问题解决:对象名 insetanceof 类名 -->判断前面的对象是不是属于后面的类

发布了30 篇原创文章 · 获赞 39 · 访问量 2062

猜你喜欢

转载自blog.csdn.net/weixin_44564242/article/details/104767312