黑马程序员技术交流社区
标题:
继承相关问题
[打印本页]
作者:
王雷
时间:
2012-9-30 21:06
标题:
继承相关问题
java没有多继承,但是能够无限的向下继承,我想知道如果两个继承类中存在相同的方法名但是实现结果不同,A类B类C类,A 继承 B B 继承 C A B 有同名但实现不同的方法,那么C类继承的时候继承的是B类中的方法还是A类中的方法
作者:
宫明星
时间:
2012-9-30 21:08
本帖最后由 宫明星 于 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的一样啦。
最后附上点小代码,可以自己试验一下。
class A
{
public void show()
{
System.out.println("A");
}
}
class B extends A
{
public void show()
{
System.out.println("B");
}
}
class C extends B
{
}
class ExtendTest
{
public static void main(String[] args)
{
C c = new C();
c.show();
}
}
复制代码
作者:
夏晓彤
时间:
2012-10-1 01:37
你只说了方法名不一样,但是函数参数个数和参数类型一样吗,你要明白重载是怎么实现的
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的视频。
说以值从函数名是不能确定到底继承哪个的
作者:
翁鹏
时间:
2012-10-1 08:37
其实Java有多层继承,也可以有多继承,但多继承要取点巧才能实现,用内部类可以实现多继承,因为内部类是相对独立的。
再说你这个继承问题,后面的会覆写前面的,就这么简单。
作者:
黑马-王燚
时间:
2012-10-1 10:38
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方法了
作者:
徐-星星
时间:
2012-10-1 17:05
这个问题没必要想那么复杂,记住一条,继承,子类的方法会覆盖父类中的方法。谁是父类,就继承谁。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2