Implements と extends: いつ使うのか? 違いは何なのか? 質問する

Implements と extends: いつ使うのか? 違いは何なのか? 質問する

わかりやすい言葉で説明していただくか、記事へのリンクを貼っていただきますようお願いいたします。

ベストアンサー1

extendsクラスを拡張するためのものです。

implementsインターフェースを実装するためのものです

インターフェースと通常のクラスの違いは、インターフェースでは宣言されたメソッドを実装できないことです。インターフェースを「実装」するクラスだけがメソッドを実装できます。インターフェースの C++ 相当は抽象クラスです (まったく同じではありませんが、ほぼ同じです)。

また、Java はクラスの多重継承をサポートしていません。これは複数のインターフェースを使用することで解決されます。

 public interface ExampleInterface {
    public void doAction();
    public String doThis(int number);
 }

 public class sub implements ExampleInterface {
     public void doAction() {
       //specify what must happen
     }

     public String doThis(int number) {
       //specfiy what must happen
     }
 }

現在クラスを拡張中

 public class SuperClass {
    public int getNb() {
         //specify what must happen
        return 1;
     }

     public int getNb2() {
         //specify what must happen
        return 2;
     }
 }

 public class SubClass extends SuperClass {
      //you can override the implementation
      @Override
      public int getNb2() {
        return 3;
     }
 }

この場合

  Subclass s = new SubClass();
  s.getNb(); //returns 1
  s.getNb2(); //returns 3

  SuperClass sup = new SuperClass();
  sup.getNb(); //returns 1
  sup.getNb2(); //returns 2

また、元のインターフェースメソッドにはオーバーライドする@Overrideものがないので、インターフェースを実装するためにタグは必要ないことに注意してください。

オブジェクト指向プログラミングにおける動的バインディング、ポリモーフィズム、一般的な継承についてさらに研究することをお勧めします。

おすすめ記事