Javaにおけるextendsとimplementsの主な違いは、キーワード「extends」がスーパークラスのプロパティやメソッドを使用するのに役立つのに対し、キーワード「implements」はクラスがインターフェースを実装するのを可能にすることです。
Javaは、James Goslingによって開発された高レベルの汎用プログラミング言語です。
スタンドアロン、モバイル、Webなど様々なアプリケーションを構築するために使用される。
Javaが人気のある大きな理由の1つは、オブジェクト指向プログラミング(OOP)パラダイムをサポートしていることです。
オブジェクト指向を使用すると、開発者は実世界のシナリオを簡単にモデル化して、ソリューションを作成することができます。
OOPの2つの主要な概念は、継承と抽象化です。
extendsとimplementsは、この2つのパラダイムに関連するキーワードです。
Javaにおけるextendsとは
継承によって、新しいクラスはすでに存在するクラスのプロパティやメソッドを使用することができます。
これはコードの再利用性を向上させます。
つまり、プログラマはすでに存在するクラスを使って新しいクラスを作ることができる。
そのため、最初からプログラムを書く必要がない。
さらに、継承の概念は、クラス間に親子関係を構築する。
ここで、既存のクラスを親クラスまたはスーパークラスと呼び、新しいクラスを子クラスまたはサブクラスと呼びます。
サブクラスがスーパークラスのプロパティやメソッドを継承する場合、子クラスは extends キーワードを使用します。
図1: 継承を利用したJavaプログラム
上のプログラムでは、Colorクラスはdisplayというメソッドを持っています。
GreenクラスはdisplayNewColorというメソッドを持っています。
GreenクラスはColorクラスを継承しています。
したがって、Colorはスーパークラスであり、Greenはサブクラスとなります。
mainメソッドで、objはGreen型のオブジェクトです。
GreenはColorのサブクラスなので、Colorクラスのプロパティとメソッドを継承することができます。
したがって、プログラマーはこのオブジェクトを使って displayNewColor や display メソッドを呼び出すことができます。
Javaにおけるimplementsとは
抽象化により、実装の詳細を隠し、機能をユーザーに表示することができます。
インターフェースは抽象化を実現するための手段であり、抽象的なメソッドで構成されています。
抽象メソッドは、メソッド定義を持ちません。
メソッド宣言だけが含まれています。
そのため、インターフェイスを使ってオブジェクトを作成することはできません。
クラスは、インターフェースに含まれる抽象メソッドを実装することができます。
クラスがインターフェースを実装する場合、キーワード implements を使用します。
インターフェイスはメソッドを実装することはできないので、インターフェイスを実装することはできません。
また、インターフェイスは一度に1つ以上のインターフェイスを拡張することができます。
上のプログラムでは、Drawはインターフェースであり、drawという抽象的なメソッドを持っています。
メソッドの定義はありません。
Triangleはクラスであり、Drawというインタフェースを実装しています。
したがって、Triangle クラスは draw メソッドを実装しています。
つまり、draw メソッドにメソッド定義を提供します。
mainメソッドでは、objはDraw型のオブジェクトです。
最後に、プログラマーはそのメソッドを呼び出すことができます。
Javaにおけるextendsとimplementsの違い
定義
extendsは、既存のクラスの機能を利用するためのJavaプログラミング言語のキーワードであり、implementsは、クラスがインターフェースの抽象メソッドに定義を提供するためのJavaプログラミング言語のキーワードです。
これが、Javaにおけるextendsとimplementsの基本的な違いです。
クラス
また、クラスは1つのスーパークラスを拡張することができ、クラスは1つ以上のインターフェイスを実装することができます。
インターフェース
Javaにおけるextendsとimplementsのもう一つの違いは、インターフェースが1つ以上のインターフェースを拡張できるのに対し、インターフェースは他のインターフェースを実装できないことです。
関連するOOPコンセプト
extendsキーワードが継承に関連するのに対し、implementsキーワードは抽象化に関連します。
したがって、これもJavaにおけるextendsとimplementsの大きな違いと言えます。
結論
プログラマーは、OOP で extends キーワードと implements キーワードを使用することができます。
Javaにおける extends と implements の主な違いは、 extends キーワードはスーパークラスのプロパティやメソッドを使用するのに役立ち、 implements キーワードはクラスがインターフェースを実装するのを可能にすることです。