关于Java多态性的问题,到底调用的是父类的还是子类的方法?

1、关于这个图中,ob的静态类型是父类(superclass),它只能调用父类自己的方法,这句话对吗?2、如果上面这句话是对的,那么就不存在多态性了。子类继承父类的时候,... 1、关于这个图中,ob的静态类型是父类(superclass),它只能调用父类自己的方法,这句话对吗?
2、如果上面这句话是对的,那么就不存在多态性了。子类继承父类的时候,会获得父类的方法(相当于子类拷贝了一份)还是在使用的时候仅仅是去调用父类的方法?
3、当父类的引用指向子类的对象的时候,子类改写了父类的方法。为什么父类的引用又可以调用子类的方法呢,感觉逻辑上不成立,呵呵
所以图上的第(5)个说的是调用subClass中的f1()方法,而第(6)调用的是superclass的方法,多以在那多态性中,在调用方法时,是有一种调用的顺序吗?如果子类改写了父类的方法就调用子类中的方法,如果子类没有改写父类的方法就调用父类的方法。

不知道这样理解对不对????
展开
 我来答
wcsfire234
2015-01-08 · TA获得超过672个赞
知道小有建树答主
回答量:737
采纳率:0%
帮助的人:229万
展开全部
  1. 不是调用父类自己的方法,而是与父类方法名相同的方法。

  2. 对象调用方法的时候是先在自己的实际类型中找,没有才去父类里面找。

  3. 引用归引用,但是他实际的类型是子类的类型,子类重写了父类的方法,所以调用的是子类的方法。

更多追问追答
追问
哎手点快了,本来想继续追问上面回答者的,结果点成采纳的了。我在问题里说,子类继承父类的时候,会获得父类的方法(相当于子类拷贝了一份)。上一个回答者好像是同意的,但是看图中第(7)个,为什么不能调用f3()函数呢,我们老师说的是,它的静态类型是父类,它只能调用父类里的方法,不知道对不对?

你说调用方法时,现在实际类型中找,但是第(7)个f3()方法是能找到的啊,我感觉是先从父类里找呢
追答
就像人和学生一样,你可以说学生是学生,但不能说人是学生。因为你定义的是父类的类型,你就要符合父类的规范。父类没有的方法,你是调不到的。但实际上你这个对象是含有这个方法的,只不过他是你子类特有的方法,不属于父类。
少帝在这礼
推荐于2016-03-18
知道答主
回答量:9
采纳率:0%
帮助的人:13.3万
展开全部
你也说了,是”子类继承父类的时候,会获得父类的方法(相当于子类拷贝了一份)“。
那么子类从父类继承的方法和父类就没有关系了,想怎么改就怎么改,就好比父亲是修汽车的,他把修汽车要用的知识全交给了你,但你有了这些知识不一定非要去修车啊,你不去修车,你父亲也不会因为这样而不会修车啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友01e738c
2017-11-15
知道答主
回答量:13
采纳率:0%
帮助的人:3.3万
展开全部
参考:
父类中有方法1,子类中未重写方法1;调用父类方法1;
父类中有方法1,子类中重写了方法1;调用子类方法1
父类中无方法1; 调用方法1时编译错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leilanhua
2015-01-08 · TA获得超过1171个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:157万
展开全部
对的哦。。。。。。。。。
追问
嗯嗯,谢谢哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式