2014-09-01 63 views
0

只有一个问题让我感到困惑...... 有两个接口A,B,它包含相同的方法methodC()...和C类实现A & B 。该接口方法应该实现A或B
现在按照我的分析,我有LYK说下面类..一个实现接口的常用方法的类

interface A { 
     /** 
     * Doc A 
     * **/ 
     public void MethodA(); 

     public String MethodB(); 

    } 

    interface B { 
     /** 
     * Doc B 
     * **/ 
     public String MethodA(); 

     public void MethodB(); 
    } 

    class lucy implements A,B{ 

     @Override 
     public String MethodA() { 
      //To change body of implemented methods use File | Settings | File Templates. 
      return null; 
     } 

     @Override 
     public String MethodB() { 
      //To change body of implemented methods use File | Settings | File Templates. 
      return null; 
     } 
    } 

输出:

你好你好

+2

它不会编译。我不知道你是如何得到这个输出的。 – 2014-09-01 06:10:51

+0

@LuiggiMendoza很好的遗忘了代码,因为它是原始代码,主要关注的是概念 – user3875672 2014-09-01 06:13:43

+0

再一次:这不会编译,这就是为什么这个问题很奇怪。测试它。 – 2014-09-01 06:14:22

回答

0

假设我们有一个接口:

public interface A { 

    public void firstMethod(); 

    public void secondMethod(); 
} 

该接口:

public interface B { 

    public void firstMethod(); 

    public void secondMethod(); 
} 

如果你犯了一个类,同时实现这些接口的,它会被编译工作好。

public class MyClass implements A, B { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
    } 

    @Override 
    public void firstMethod() { 
     // some code here 
    } 

    @Override 
    public void secondMethod() { 
     // some code here 
    } 
} 

但是,如果你firstMethod()secondMethod()方法添加到MyClass,但不同的返回类型,它不会编译。

public class MyClass implements A, B { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
    } 

    public String firstMethod() { 
     return ""; 
    } 

    public String secondMethod() { 
     return ""; 
    } 

    @Override 
    public void firstMethod() { 
     // some code here 
    } 

    @Override 
    public void secondMethod() { 
     // some code here 
    } 
} 

构成方法签名Java使用方法参数,但不使用返回类型。这将导致“方法已经定义”错误。因为从Java的角度来看,方法:void firstMethod();String firstMethod();secondMethod()方法相同)具有相同的签名。

相关问题