推奨されます, 2024

エディターズチョイス

Javaでのキーワードの拡張と実装の違い

キーワードextendsおよびimplementsは、新しく作成された子ブロック内の既存の親ブロックの機能を継承するために使用されます。 extendsキーワードを使用して、新しく作成されたクラス(サブクラス)は既存のクラス(スーパークラス)の機能を継承できます。 implementsキーワードを使用すると、新しく作成されたクラスはインタフェースのすべてのメソッドを実装できます。 キーワード拡張と実装の主な違いは、クラスは他のクラスを拡張してそのすべてのメンバーを継承するのに対し、クラスはすべてのメソッドを継承し、要件に従ってそれらを実装するためのインターフェースを実装することです。 以下に示す比較表で説明されているように、キーワード拡張と実装の間には他にもいくつかの違いがあります。

比較チャート

比較基準広がる実装
基本extendsキーワードは、スーパークラスの機能を使用してサブクラスを作成するために使用されます。implementsキーワードは、インターフェースの実装に使用されます。
方法extendsキーワードは、スーパークラスのすべてのメソッドをオーバーライドするわけではありません。implementsキーワードは、実装されているインタフェースのすべてのメソッドを実装する必要があります。
クラスクラスは1つのスーパークラスしか拡張できません。クラスは複数のインタフェースを実装できます。
インタフェースインターフェイスは複数のインターフェイスを拡張できます。インタフェースは他のインタフェースを実装できません。

extendsキーワードの定義

継承は、オブジェクト指向プログラミングにおける重要な概念であり、サブクラスが別のスーパークラスを拡張するときに実現されます。 サブクラスは1つのスーパークラスのみを拡張できます。 クラスは、Javaの複数のスーパークラスを拡張することはできません。 クラスが別のクラスを拡張すると、スーパークラスで定義されているメソッドをオーバーライドできます。 例を使ってキーワードの拡張を理解しましょう。

 クラスA {String s; A(文字列s1){s = s1; void display(){System.out.println(+ s);} //表示文字列。 クラスBはA {String i;を拡張します。 B(文字列s1、文字列i1){スーパー(s1); i = i1。 void dispaly(){super.dispaly();} / *クラスAのdisplay()が呼び出されました。* / System.out.println(+ i); オーバーライド{public static void main(String args []){B ob = new B(Tech、Differences);}} ob.display(); / *呼び出されたクラスBの表示* /}} / *出力* /技術的な違い 

上記のコードでは、クラスBがクラスAを拡張し、クラスAで定義されているメソッドdisplay()をオーバーライドしていることがわかります。同様に、インターフェイスは一度に複数のインターフェイスを拡張できます。 インターフェースは拡張インターフェースのメソッドを実装する必要がないため、一度に複数のインターフェースを継承することができます。

implementsキーワードの定義

キーワードimplementsを使用して、クラスはインタフェース内のすべてのメソッドを継承します。 クラスがインタフェースを実装するとき、そのクラスは実装されたインタフェースのすべてのメソッドを実装しなければなりません。 implementsキーワードはメソッドの実装を約束するが、インタフェースはその中にメソッドを実装しないので、インタフェースは別のインタフェースを実装することはできない。そのため、インタフェースが別のインタフェースを実装することは不可能である。 例を使ってimplementsキーワードを理解しましょう。

 インタフェース文字列{void display(String s);} インターフェイス整数{void show(int i);} クラスのデモは、文字列を実装しています、整数{void show(int i){System.Out.Println( "integer value:" + i);} void display(String s){System.Out.Println( "string value:" + s);} クラスDemo_main {public static void main(string args []){Demo d = new Demo();}} d.display( "TechDifferences"); ショウ(2); d。 / * output * / TechDifferences 2 

上記のコードのように、クラスデモは2つのインターフェース文字列とintegerを実装し、display()とshow()の両方のインターフェースで宣言されたメソッドを実装していることがわかります。

拡張と実装の主な違い

  1. クラスは別のクラスを継承することができます。または、インタフェースはキーワードextendsを使用して他のインタフェースを継承しますが、クラスはキーワードimplementsを使用してインタフェースを実装できます。
  2. スーパークラスを拡張するサブクラスは、スーパークラス内のすべてのメソッドをオーバーライドする場合としない場合があります。 一方、インターフェースを実装するクラスは、そのインターフェースのすべてのメソッドを定義/実装する必要があります。
  3. クラスは、同時に任意の数のインタフェースを実装できます。 一方、クラスは1つのスーパークラスしか拡張できません。
  4. インタフェースは任意の数のインタフェースを拡張できますが、メソッドとインタフェースを定義する実装手段としてインタフェースが他のインタフェースを実装することはできません。そのため、インタフェースは別のインタフェースを実装できません。

結論:

インターフェイスを実装することで、クラスを拡張することよりもコードの柔軟性が増すという説明を終えました。 Javaではスーパークラスを1つだけ継承するという制限がなくなるので。 implementsキーワードを使用すると、クラスは複数のインタフェースの機能を継承できます。

Top