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

关于java中实现多个接口的问题
如果我有两个接口  
public   interface   MyInterface1{  
public   int   a=1;  
}  
public   interface   MyInterface2{  
public   int   a=2;  
}  

class   Test   implements   MyInterface1,MyInterface2{  
}  

在main中:  
Test   t   =   new   Test();  
System.out.println(t.a); <----这里会出编译问题  

在c++中可以通过虚拟继承来避免这种菱形继承的问题  

我想问,在java中用什么办法避免?还是java提供了什么机制来避免?
如果有,上面代码怎么改???
谢谢

------解决方案--------------------
首先在interface 里定义的变量都是static的,无论有没有用static关键字

冲突的时候只能使用类名来引用了

System.out.println(MyInterface1.a);

------解决方案--------------------
冲突的时候只能使用类名来引用了.

------解决方案--------------------
ls up
------解决方案--------------------
up
------解决方案--------------------
static表示静态方法,可以脱离类而实现,也就是说可以没有一个类的实例也能执行这个static方法,类似于一个全局方法。因此,static方法中的代码必须是可以单独拿出来执行的,如果要执行这个类中的非static方法,必须先实现一个这个类的实例。

------解决方案--------------------
之所以使用static是因为接口不能被实例化,而如果这样的前提下还要使用其中的属性的话,就只有使用类属性,也就是static存在的原因了。