我们先定义一个接口A,再定义一个接口B,他们有相同的名称的方法,该方法类型也相同,当在MYCLASS类中继续了A,B这两个接口,重写ff方法时,重写的到底是A的ff方法还是B的ff方法??  (此种编译正常.运行没问题)
interface A{
  public void  ff();
}
interface B{
  public void ff();
}
class MYCLASS implements A,B{
  public void ff(){
  System.out.println("OVERWRITE ee");
  }

public class ee{
 public static void main(String[] args){
  MYCLASS Myclass=new MYCLASS();
  Myclass.ff();
 }
}下面我们将程序稍改动一下,interface A{
  public String  ff();
}
interface B{
  public void ff();
}
class MYCLASS implements A,B{
  public void ff(){
  System.out.println("OVERWRITE ee");
 }
 public String ff(){
  return "A:ff()";
 }

public class ee{
 public static void main(String[] args) {
  MYCLASS Myclass=new MYCLASS();
  Myclass.ff();
 }
}
MYCLASS中如何重写A,与B的ff方法?因为他们各自ff()方法的类型不一样,而在MYCLASS中必须重写A与B的ff()。结果这造成同一类中写两个类型不同的同名方法
请发表意见。

解决方案 »

  1.   

    接口只关心你的实现,对照一下方法签名,只要一致就认为实现了。
    他们调用的不是A- M,也不是B- M,而是你实现的方法。第二个,主要是方法签名不明确造成的,返回类型不做为方法签名之列。深了我也说不了了,不懂JVM编译原理。
      

  2.   

    在MYCLASS中定义两个内部类,分别实现A,B