日期:2014-05-20  浏览次数:20692 次

和大家探讨一个接口多继承问题
用了很多年Java,从来没有用过接口去多继承接口的语法,比如:interface myinter03 extends myinter01, myinter02
今天心血来潮试试,发现java竟然支持extends多个父接口的写法!
这是不是有违Java单继承的设计思想呢?sun为什么要这样设计?
---------------以下使用Eclipse生成的代码,注意class test implements myinter03, myinter01
那么test中继承下来的add()方法是来自于myinter01呢,还是来自于myinter03?

---------------------
package com;
public interface myinter01{
public abstract int add(int x,int y);
}
//***********************************
package com;
public interface myinter02 extends myinter01 {
public abstract int subtract(int x,int y);
}
//************************************
package com;
public interface myinter03 extends myinter01, myinter02 {
}
//************************************
package com;
public class test implements myinter03, myinter01 {
@Override
public int add(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int subtract(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new test().add(3, 4);
}
}

------解决方案--------------------
SUN在这里没有什么失误,不知道你说的选择指定的add方法会是什么问题

接口的本质是方法实现的声明,一种规范化机制

选择add方法没有什么冲突,就像你能走动,既是实现了动物的走动接口,也是实现了人的走动接口,没有什么问题

探讨
引用:

Java code


//public class Test implements Myinter03, Myinter01 {//因为Myinter03
//继承了Myinter01接口,这里只需要写implements Myinter03即可
//因为实现了Myinter03接口就一定会实现Myinter01接口
public……

------解决方案--------------------
多重继承的冲突是因为同名方法有不同的实现,接口没有实现,哪来的冲突?