多态相关知识点

一、多态简介

109d11c14e1f4eab826326c949fb331c.jpg

 二、多态的前提

有继承 有方法重写 有父类引用指向子类对象

f37468832a6e4392b635435671a11ff4.jpg

 ps:方法重写小技巧,直接打字打出父类的方法名,回车就可以(如下图)

733fc09e797d4fe689843109aa7ca70e.jpg

 三、多态中成员(包括成员变量和成员方法)的访问特点

7a66d35e5e604e1399b168b240ed8b8e.jpg

 

f8cbe489c4814ae8aa9fe46e6b04003a.jpg

 左边右边指的是main方法第一行:定义时的式子,编译看左边,也就是看父类中有没有所调用的成员,对于成员方法:运行看右边,也就是会输出子类中的内容(如果子类没有该方法,那么由于继承的原因,会输出父类中的对应方法)  对于成员变量:运行看左边,也就是会输出父类中的内容

四、多态的好处与弊端

ecacdaeaa77c415ea7fa39877580c4ce.jpg

(只能访问子类与父类共有的方法,也就是被重写的方法)

接下来是多态在编写时的流程

8b8bf20d1aec45dfb33cb9dde7c500d8.jpg

 这是一个fu类

dcf4e20a037040158d4bb2550fd8123a.jpg

 首先是一个zi类(pig) 需要继承fu类(animal) 同时,重写父类方法

 

现在还差第三个条件,这里我们用函数参数传递的形式来实现第三个条件

f6483302d0324f86a4221caf0398d091.jpg

 创建一个操作对象,参数设置为fu类,然后在demo中将zi类对象传入fu类参数,从而实现fu类引用指向zi类对象,这时,在操作类中进行多态分析和操作,如下图8702a00e590245f88ef51db622c244bc.jpg

 a.eat 调用方法,所以编译看左边,那么animal中存在eat方法,所以编译通过,运行看右边,运行时运行zi类对象,所以运行“猪吃白菜”

五、多态中子类特有方法的访问

当子类有一种独有方法,父类没有,那么就无法调用这个子类的独有方法,解决办法如下

4a1156a77d9e4ffc823630f21401c634.jpg

 向下转型,将父类引用(或者说父类对象)强转为子类,并用一个子类对象接住,之后利用子类对象对子类中的特有方法进行访问调用

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值