永发信息网

java中关于父类引用指向子类对象,多态性的问题~虚心求教

答案:6  悬赏:50  手机版
解决时间 2021-02-03 07:38
通过父类引用指向子类对象,多态性的体现的两种情况
1.List l = new ArrayList();
当父类为接口,即父类的所有方法都是抽象方法,必须靠实例化子类来实现父类的方法,所以此时必须要用List l = new ArrayList()形式来实现父类中的方法

2.Parent p = new Son();
当父类为正常的类的时候,如果用父类引用指向子类对象,能调用的方法只能是父类中有的或者是子类重写父类的方法,而不能调用子类有的而父类没有的方法。

如果无论如何都只能调用父类中的方法
Parent p = new Son()和Parent p = new Parent()又有什么区别呢?子类中有的而父类中没有的方法又不能被调用..

看过最多的例子是Animal c = new Cat()和Animal d = new Dog(),我只明白了这样多态性方便程序维护比如再加入一个Animal t = new Tigger()可以直接加.
但是无论怎么该能调用的方法依然只是Animal类中的方法而已呀.又不能调用子类中特有的方法..实在搞不懂有什么用..求解答~(PS:我知道肯定有用,但是我就是被绕进去了出不来~求领路)
最佳答案
你这么去理解,用你上面第2点说明,如果父类Parent中有个炒菜的方法,里边是parent炒菜的过程和需要的材料,子类Son重写了父类中的炒菜方法,但是子类炒菜方法与parent完全不同(儿子喜欢另一种炒菜方法),那么在程序中调用p.炒菜方法时,就会调用子类的炒菜方法。
所以多态实现的是:通过父类或接口调用子类或实现类里的重写方法或者实现方法,除非继承的子类没有重写父类任何方法,否则调用的都是子类里边重写的方法
全部回答
比如eat()方法只要在Animal里定义一次就可以了,不需要再每种动物对象里面都定义
不知道楼主是想知道有什么区别,还是想知道有什么好处(用处)? 区别就是:Parent p = new Son(),调用的是子类里重写的父类的方法;而Parent p = new Parent()调用的是自己的。 好处就是:你可以不用管子类是怎么实现的,也不用管到底有没有子类,特别是在p作为其他方法参数的时候,如:doSomething(Parent p){ p.xxx } 当然你也可以说接口、抽象类也可以这么实现,但是各有各的好处,看你具体的应用了。
Parent p = new Son() 假设Son中重写Parent的方法A,这样 p中的A()是Son中的方法; Parent p = new Parent() 而这样 p中的A() 是Parent中的A()方法。
在多态性处理时,有时需要判明某个引用到底指向哪个实例,可以使用的运算符是 instanceof。
是这样的:向上转型(以上定义,父类应用指向子类对象)只是实现多态的一种方式。该方式定义的对象,首先会调用子类的方法,前提是子类有重写;如果没有,则会调用父类方法。 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
福特金融好不好办理5年车贷
润枫水尚西区西门(人行门)地址有知道的么?有
大苗山泉地址有知道的么?有点事想过去
为什非弹性形变也能产生弹力?
SQL Server 2008 r2集群怎么更改默认端口号
【6203轴承尺寸】滚动轴承代号6203/P5表示公
浏湸的意思是什么啊?知道的请说下!
(6分)根据图回答:(1)该图表示的生理过程是
宁乡县坝塘镇横田湾村卫生室地址在什么地方,
做杠铃卧推总是感觉不到胸肌的发力,杠铃俯身
CorelDRAW文件可以嵌入字体其中吗
【基础梁】下面有关基础梁、框架梁的差异分析
启和启有什么区别
文敏水店怎么去啊,我要去那办事
巴马瑶族自治县江苏商会地址在什么地方,想过
推荐资讯
婚前个人购房,婚后对方可以提公积金吗?
夏目友人帐肆第9集中出现的怪兽是什么 好像和
上海市社会保险费专用收据丢了怎么办?
中兴眼镜地址在什么地方,我要处理点事
统一是历史发展的趋势。阅读下列材料:材料一
一个男人总是吻你,一见到反应就很强烈,这代表
8200平方米等于多少亩?20000平方米呢?60亩
推荐一款您用过的炒锅
会泽小锅米线在什么地方啊,我要过去处理事情
宜乐网咖怎么去啊,有知道地址的么
狗狗疝气手术一般需要多少钱
科创大药房连锁黄氏药店这个地址在什么地方,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?