社区
C++ 语言
帖子详情
为什么不直接用子类引用指向子类对象,而用父类引用指向子类对象
半醉看夕阳
2015-10-21 09:23:40
在实现多态的过程中,为什么不直接让子类引用指向子类对象,而要让父类引用指向子类对象,这样做好什么好处?谢谢
...全文
1879
11
打赏
收藏
为什么不直接用子类引用指向子类对象,而用父类引用指向子类对象
在实现多态的过程中,为什么不直接让子类引用指向子类对象,而要让父类引用指向子类对象,这样做好什么好处?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lwxtest0
2019-03-03
打赏
举报
回复
多态的精髓就在这里了
qq_34409626
2019-02-27
打赏
举报
回复
1
当有多个继承,关系很乱的时候就展现其作用了:
假想,如果自己调用自己的方法,就会不知道你是哪个类的派生,没有多态的作用了。
所以总有老子叫儿子办事的道理:
老爸(父类)指定个工具给儿子(派生类),儿子才可以用这个工具做其他事情,我们也知道他那个工具来自他爸,认祖归宗嘛
www_adintr_com
2015-10-24
打赏
举报
回复
1
你针对子类写的一个函数就只能用于操作这个类的对象 你针对父类写的一个函数可以操作所有从这个父类继承的子类的对象 这是对
一个东西进行操作
和 对
一类东西进行操作
的区别
liganglester
2015-10-24
打赏
举报
回复
2
我也举个例子: 如果你写框架(framework)的话也许会体会深刻。 在写框架代码时,你往往不知道每个对象的具体类型,只知道他们共同的父类是什么。 在框架的代码里,也就是通过管理这些具体类型的父类来实现框架代码的通用性的,也可以说扩展性(增加新的子类)。 比如: 你写了一个飞机游戏,画面里出现什么类型飞机是随机决定的,你的代码里也就不可能用一个具体飞机类型来操作。 所以,往往是随机生成各种类型飞机,他们有共同的父类,你的代码就可以用父类指针来控制行为。比如中弹后的能量损失多少之类,每种飞机可能不同。 以上,不知道对楼主有帮助没。
bluemei-lee
2015-10-23
打赏
举报
回复
1
好处之一: 上层逻辑抽象,独立清晰, 方便以后扩展. 举个常见的例子,比如设计一个网卡驱动类,那么上层只需要考虑网卡的功能接口,具体到不同厂商只要遵循接口实现不同的子类. 这时调用方就用接口(或者父类)来调用,而不是依赖某个特定厂商A的网卡,这样即使换一种厂商B网卡也不需要重新改代码,而只要实例化一个厂商B驱动对象赋给父类指针.
ztenv
版主
2015-10-23
打赏
举报
回复
当参数类型不确定时(比如:A是父类,B、C、D是子类;参数可能需要传递B类型或C类型或D类型指针或引用),使用子类型是不是会受限制?或增加了函数(重载)?如果参数类型指定为父类型A的指针或引用,那函数只要有一个就够了,即使以后再增加了D类型,那么函数的签名也不会发生变化,通过多态机制可以调用到子类型的函数(is-a关系) 子类型一般是具体类型,个数有可能是不可预知的,有可能会变化的; 父类型一般是抽象类型,只要抽象的好,发生变化的可能性比较小;
张小飞Official
2015-10-22
打赏
举报
回复
好处就是你不用重新再去定义一个类。 楼上也说了这是面向对象语言的一大特性,对象很基本的一个特性就是继承,但是在函数中是怎么看出来这两个类是继承关系呢,只能在使用的时候不光是提醒你自己,这个类是另一个类的子类,也是方便其他人去阅读你的代码。假如多重继承与虚类存在的话使用的时候不加父类声明岂不是很容易乱么
罗博士
2015-10-22
打赏
举报
回复
方便代码以后的修改或者升级。
yu.sang
2015-10-21
打赏
举报
回复
首先当然可以让子类指向子类的方法,但是这么使用的场合觉对不是多态的场合。 要理解多态的作用,结合实际的使用,就能很清楚知道这么做是多大的方便的,这可是面向对象语言的一大特性啊。
dustpg
2015-10-21
打赏
举报
回复
对外暴露一致的接口方便调用, 你不知道这个东西是什么, 但是知道它能干什么就行.
继承之父
子
类
赋值兼容性
本文探讨了面向对象编程中
子
类
与父类之间的赋值兼容性原则,解释了为什么
子
类
对象可以赋值给父
类对象
,但反之不成立。通过代码示例展示了
子
类
对象可以
直接
初始化父
类对象
、父类指针可以
指向
子
类
对象以及父类
引用
可以
引用
子
类
对象的过程,同时强调了这种兼容性的限制和重要性。
如何理解
父类
引用
指向
子
类
对象
本文深入探讨Java中多态的实现原理,包括
父类
引用
指向
子
类
对象
时的内存分配机制,以及如何通过方法覆盖实现多态。此外,还讨论了属性与静态方法在多态中的表现。
#父类
指向
子
类
_Java中为什么使用向上转型而不
直接
创建
子
类
对象?
本文介绍了向上转型和向下转型的概念、意义及使用场景。向上转型是把
子
类
对象赋给父类
引用
,能体现类的多态性,减少重复代码;向下转型是将
指向
子
类
对象的父类
引用
赋给
子
类
引用
,使用时需先向上转型。通过实例说明了二者在程序设计中的作用。
用父类
引用
指向
子
类
好处
本文探讨了面向对象编程中继承的概念及其应用场景,包括方法重写和多态的使用,解释了为何需要向下转型来实现特定的功能。
为什么
子
类
对象可以赋值给父类,而父
类对象
不可以赋值给
子
类
呢?
探讨了
子
类
对象为何可以赋值给父类
引用
,而父
类对象
却不能赋值给
子
类
引用
的原因,解释了多态性在Java中的应用,以及向上转型和向下转型的概念。
C++ 语言
65,210
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章