请问,java中能否在两个接口中定义相同签名的方法。然后让某个类实现这两个接口,但是对于不同接口,实现的代码又不相同呢?
比如说:
public interface SimpleDescriptor
{
  public String getDescription();
}public interface ComplexDescriptor
{
  public String getDescription();
}public class SomeClass implements SimpleDescriptor, ComplexDescriptor
{
  protected String simpleDesc = "This is simple description.";
  protected String complexDesc = "This is complex description.";  //请问怎么写能够实现通过接口SimpleDescriptor调用getDescription时返回simpleDesc中的内容;而通过ComplexDescriptor调用getDescription时返回complexDesc中的内容呢?
}

解决方案 »

  1.   

    这种方法是没有办法,,实现的。
    因为,都实现了两个接口中getDescription();
    这两方法是相同的。被覆盖了。
      

  2.   

    没有办法实现,也就是说假如两个接口中定义的方法有相同的(同名,同参)的,而一个类中要实现这两个接口中的这个方法,而一个类中,不能同时存在两个或以上的相同函数,这就导致了你不可能实现你想要的功能,应该java中采用的是动态绑定的机制.所以,你在调用方法的时候,只能选定你想输出的内容,一但选择一个,也就意味着放弃另外一个.你无法给出足够的条件让jvm能知道你所要调用的是哪个
    public class SomeClass implements SimpleDescriptor, ComplexDescriptor
    {
      protected String simpleDesc = "This is simple description.";
      protected String complexDesc = "This is complex description.";   //你只能定义这个方法,而不可能同时存在两个
       public String getDescription(){
      return this.simpleDesc;
         
              // or return other
         return this.complexDesc;
        }       //error
    //    public String getDescription(){
    /   return this.simpleDesc;
    //     
    //    }
      }