社区
Java SE
帖子详情
【Java多态疑问】
握草
2018-01-06 10:36:54
疑问如下:
我们知道,Java中子类可以继承父类的方法和属性(private看作隐式继承,通过get方法可得),可是
为什么向上转型即父类引用子类时,父类的普通方法叫“覆盖”,静态方法叫“隐藏”(就是转型后就调用父类的方法了);而属性则只可以被“隐藏”却不能“覆盖”呢?
希望大家不要吝惜自己的想法,如果可以结合实例或者底层说说就更好了
...全文
319
5
打赏
收藏
【Java多态疑问】
疑问如下: 我们知道,Java中子类可以继承父类的方法和属性(private看作隐式继承,通过get方法可得),可是 为什么向上转型即父类引用子类时,父类的普通方法叫“覆盖”,静态方法叫“隐藏”(就是转型后就调用父类的方法了);而属性则只可以被“隐藏”却不能“覆盖”呢? 希望大家不要吝惜自己的想法,如果可以结合实例或者底层说说就更好了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
云楼
2018-01-09
打赏
举报
回复
生成子类对象时并不会同时生成父类对象 当调用普通方法时,相当于(this.方法名),因为没有父类对象,所以this只能指向子类对象,调用子类的方法 当调用静态方法时,静态方法也被称为类方法,无需构造对象用类名可以直接调用,所以调用时是(类名.方法名),父类存在,所以向上转型时调用父类的静态方法。
oyljerry
2018-01-07
打赏
举报
回复
转成父类就要用多态方式调用子类实现
qq_39449585
2018-01-07
打赏
举报
回复
我的理解是:多态需要继承+覆盖方法+父类引用指向子类对象。 当你调用非静态且不是private的方法时时,会将该对象的引用传递给方法,会根据实际的对象调用,因此叫“覆盖”。 而静态方法只需通过类名调用就可以了,如果通过对象调用也不会传递对象引用给方法,根据引用的类型调用。
Lie_lei
2018-01-07
打赏
举报
回复
我觉得可以这么理解,你继承了你父亲的优点,你不说你是从你父亲那里继承的优点,谁会知道呢。在外人认为是自己的优点,你父亲依旧有这些优点,只是被你隐藏起来啦。这样我觉得很好理解。
Dean丿霸王
2018-01-07
打赏
举报
回复
继承不是类的继承,是子类的对象的继承,子类对象可以调用父类的属性和方法,覆盖是指你子类不想用父类的方法的内容,想重新写一个。
教学视频-继承&
多态
1.继承&
多态
的教学视频,助你节省了学费 2.提供源码,并且不懂可以在线问
Java
工程师成神之路.zip
Java
工程师成神之路.zip
Java
_解惑(PDF)
Java
_解惑 PDF 高清晰版 涵盖了许多初学者容易犯错的地方
2021最新
java
入门教程下载借鉴.pdf
2021最新
java
入门教程下载借鉴.pdf
Java
实验报告及源码
java
实验报告及源程序代码!如没有你想要的,可以发站内信,一起交流!
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章