1. ホーム

[解決済み】インプリメントとエクステンド。いつ使う?その違いは何ですか?

2022-03-23 16:09:25

質問

わかりやすい言葉で説明するか、何かの記事へのリンクを張ってください。

どのように解決するのですか?

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 タグはインターフェイスの実装には必要ありません。なぜなら、本来のインターフェイスのメソッドである をオーバーライドする

についてもう少し調べてみることをお勧めします。 オブジェクト指向プログラミングにおけるダイナミックバインディング、ポリモーフィズム、一般的な継承について