我想了解我是如何克服“钻石问题”,在JAVA 让我们说我有这3个接口:的java我怎样才能克服多重继承和钻石problam
interface Alpha{
public default int methodA() {
int result=0;
System.out.println("Print from Alpha methodA");
return result+4;
}
}
//**********************************
interface Betta extends Alpha {
public default int methodA() {
int result=0;
System.out.println("Print from Betta methodA");
return result+8;
}
}
//*******************************
interface Gamma extends Alpha {
public default int methodA() {
int result=0;
System.out.println("Print from Gamma methodA");
return result+16;
}
}
而那类:
public class Delta implements Betta,Gamma {
public static void main(String args[]) {
// TODO Auto-generated method stub
Delta cObj=new Delta();
cObj.methodA();
}
我怎么能得到班级给我的Alpha接口输出? 除了将它改为“Delta实现Alpha”以外的其他方法?
您无法访问已被覆盖的方法。如果您需要访问它,您需要添加一个可以调用此方法的方法,例如Betta或Gamma。 –
如果没问题,那么你可以在Alpha界面中定义'static'方法,并从Delta类中调用它。 – SachinSarawgi
你试过编译过吗? –