面向对象编程——多态

目录

一、多态的引出

二、向上转型

1、向上转型的引出

 2、向上转型的意义

 (1)提出问题

(2)解决问题

 (3)延伸

 三、方法重写

1、方法重写的解释

2、重写规则

 四、向上转型的时机

(1)方法传参

(2)引用赋值

 (3)方法的返回值

(4)思考题

五、向下转型

1、向下转型概述

 2、注意问题

 3、向下转型风险

 4、什么时候用得到

 六、全部代码


多态:一个引用可以表现出多种行为或者特性

一、多态的引出

在生活中,比如养了一种小狗,你给它起名叫大黄,别人看见了叫狗狗,当狗要吃饭时,你说大黄来吃饭了,别人说狗狗来吃饭了,在这个场景下,其实指向的是同一个对象,只是对象的名称不同,这就是简单的多态。

二、向上转型

1、向上转型的引出

Dog dog=new Dog();

类名称 类引用=new 该类对象();这是我们最常用到的产生对象的方式。

引出:

Animal animal=new Dog();

父类名称 父类引用=new  子类对象();

在这种产生对象的方式中,存在一个天然语义Dog is an Animal

所以我们将这种产生对象的方式叫做向上转型,向上转型发生在有继承关系的类之间

 2、向上转型的意义

向上转型最大的意义在于参数统一化,降低使用者的使用难度

 (1)提出问题

如果没有向上转型

①作为类的实现者来说,fun方法接受Animal以及其子类的对象作为参数,Animal有多少子类,fun方法就要重载多少次。联想生活,在大自然中,Animal动物的子类有几百万种,那么fun方法就要重载几百万次,十分的累。

②作为类的使用者来说,我要使用fun方法,我就要了解Animal以及其子类的所有对象,我才可以直到我调用的是谁,同样十分的累。

(2)解决问题

既然子类时天然的父类,那么为何不用父类去指代所有的子类的——向上转型

可以发现,只要是Animal及其子类,都是天然的Animal对象,通过最顶层的父类引用Animal来指代所有的子类对象。

总结:在继承关系中,当存在向上转型时,最顶端的父类就可以指代所有的子类对象,并且当Animal有一个新的子类时,是非常容易扩展的。

 (3)延伸

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值