黑马程序员技术交流社区
标题:
一个类同时继承了两个接
[打印本页]
作者:
442851994
时间:
2012-10-30 10:25
标题:
一个类同时继承了两个接
本帖最后由 442851994 于 2012-11-1 18:15 编辑
class Demo6
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
interface A
{
void show();
}
interface B
{
String show();
}
class C implements A,B
{
public void show(){
}
public String show(){}
}
作者:
种生祥
时间:
2012-10-30 11:14
本帖最后由 种生祥 于 2012-10-30 11:24 编辑
因为接口中的方法没有主体,可以由子类任意定义,所以实现的两个接口中有相同的方法,只需要复写一个就可以了
而且
class C implements A,B
{
public void show(){
}
public String show(){}//
如果C的对象调用show()方法时是是调用哪一个?
}
这种情况会编译失败
作者:
王永荣
时间:
2012-10-30 13:05
解决不了,因为两个接口中的show()返回类型是不一样的,不能同时存在于欲实现A和B接口的类C中。
作者:
黑马张旭
时间:
2012-10-30 17:10
其实确实存在你说的这个情况,就是java中一个实现类同时实现两个不同的接口,并且这两个接口中存在相同参数列表的方法。
但是java的设计者们是这样考虑问题的:
接口中只有方法声明而没有实现,因此出现上面那种情况时,实现类中只要实现一次该方法就可以了。从另外一个方面说,设计者们认为这种情况非常罕见,一般来说,开发者在知道两个接口可能会被同一个类实现时,就要注意接口中方法声明不要过于简单易雷同。
作者:
付维翔
时间:
2012-10-30 21:41
可以使用内部类的问题去解决,首先类C本身继承类A ,然后再建一个内部类实现B,在C类中提供一个回调函数,返回内部类的实例对象,就可以了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2