A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雷 中级黑马   /  2012-9-30 21:06  /  2352 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java没有多继承,但是能够无限的向下继承,我想知道如果两个继承类中存在相同的方法名但是实现结果不同,A类B类C类,A 继承 B    B 继承  C    A B 有同名但实现不同的方法,那么C类继承的时候继承的是B类中的方法还是A类中的方法

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 国庆快乐

查看全部评分

5 个回复

倒序浏览
本帖最后由 宫明星 于 2012-9-30 21:21 编辑

这个你最好自己打一下就知道了。
打印的会是最后一个继承的值,因为后一个会覆盖前一个

A类B类C类,A 继承 B    B 继承  C    A B 有同名但实现不同的方法,那么C类继承的时候继承的是B类中的方法还是A类中的方法?
C类继承的是B类的方法。因为在B类中的方法已经覆盖了A类继承过来的方法了。

其实你把每一个继承单独拆开看就明白了,B继承的是A,而C继承的是B,C跟A是没有一点关系的,C只会跟B有继承关系。
这样看就很简单了,在B中已经覆盖了继承的方法,而C继承了B的方法自然就跟B的一样啦。

最后附上点小代码,可以自己试验一下。
  1. class A
  2. {
  3.         public void show()
  4.         {
  5.                 System.out.println("A");
  6.         }
  7. }

  8. class B extends A
  9. {
  10.         public void show()
  11.         {
  12.                 System.out.println("B");
  13.         }
  14. }

  15. class C extends B
  16. {
  17.         
  18. }


  19. class  ExtendTest
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 C c = new C();
  24.                 c.show();
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 国庆快乐

查看全部评分

回复 使用道具 举报
你只说了方法名不一样,但是函数参数个数和参数类型一样吗,你要明白重载是怎么实现的
void show(int a,char b,double c)()
void show(int x,char y,double z)() //这是一样的
int show(int x,char y,int z)()//这是重载,和返回值没关系
…………建议观看毕老师的第3天16的视频。
说以值从函数名是不能确定到底继承哪个的

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 国庆快乐

查看全部评分

回复 使用道具 举报
其实Java有多层继承,也可以有多继承,但多继承要取点巧才能实现,用内部类可以实现多继承,因为内部类是相对独立的。
再说你这个继承问题,后面的会覆写前面的,就这么简单。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 国庆快乐

查看全部评分

回复 使用道具 举报
1.首先你问题就描述的有问题     A继承B     B继承C         怎么可能C 去继承  A ,  B呢  ,你应该问的是A类继承的时候    继承的是B的方法 还是 C的方法吧。
class  C                       class  B  extends C
{                              {
    void run(){}                 void  run(){}    //这里就已经复写了C的run方法了
}                              }

class A  extends B
{

}

main函数中

A  a=new A();     a.run()  当然就是调用的B的run方法了   

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个问题没必要想那么复杂,记住一条,继承,子类的方法会覆盖父类中的方法。谁是父类,就继承谁。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马