【问题标题】:Implementing an Interface with an abstract method使用抽象方法实现接口
【发布时间】:2020-10-12 18:38:14
【问题描述】:

我正在尝试使用public class MyStringSet implements StringSet{} 实现接口,但我不断收到错误消息“MyStringSet 不是抽象的,并且不会覆盖 StringSet 中的抽象方法 getCapacity()”。我怎样才能实现这个接口而不出现这个错误?

    public interface StringSet {
         public void resize(int larger);
         public void insert(String entry);
         public void remove(String target);                  
         public String getRandomItem ();           
         public String getFirstItem ();         
         public boolean contains(String target);                
         public boolean is_empty( );                   
         public int inventory( );                  
         public int getCapacity( );
    }

【问题讨论】:

  • 实现这个方法有什么问题?
  • 要么为这些方法添加默认定义,要么使 MyStringSet 抽象。
  • 请添加您的MyStringSet 课程。当然它不包含所需的getCapacity() 方法。
  • 这样清晰的错误信息有什么问题?如果它说您的类“MyStringSet [...] 没有覆盖 StringSet 中的抽象方法 getCapacity()”,那么只需执行此操作!覆盖它。我投票决定关闭。
  • 我想这是一个初学者的问题。我想有很多人在学习 Java 并且有同样的问题。他使用 implements 关键字实现了一个接口。那么为什么编译器会抱怨他忘记了什么?你必须知道,什么是最重要的才能理解信息。也许我的例子有帮助。

标签: java implementation


【解决方案1】:

简短的回答:很可能,您的实现并没有真正“实现”那些抽象方法。接口就像孔。实现填补了这些漏洞,如果没有,您必须将扩展类声明为抽象类,因为它让一些“漏洞”打开。它们仍然必须由不再抽象的实际实现来填充。

这是您的案例的简单实现:

public class MyStringSet implements StringSet {
  public void resize(int larger) {}
  public void insert(String entry) {}
  public void remove(String target) {}
  public String getRandomItem () {return null;}
  public String getFirstItem () {return null;}
  public boolean contains(String target) {return false;}
  public boolean is_empty( ) {return false;}
  public int inventory( ) {return 0;}
  public int getCapacity( ) {return 0;}
}

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2011-11-20
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多