Javaの抽象クラスとインターフェイスの違いは何ですか

目次:

Anonim

NS 主な違い Javaの抽象クラスとインターフェイスの間には、 抽象クラスは抽象化を実装するために使用され、インターフェイスは抽象化と多重継承を実装するために使用されます。

オブジェクト指向プログラミング(OOP)の主要な柱の1つは、抽象化です。これは、実装の詳細を非表示にし、機能のみをユーザーに表示するプロセスです。たとえば、ユーザーはリモコンを操作するためにリモコン内部の回路を理解する必要はありません。抽象化はそれに似ています。これにより、プログラマーは、オブジェクトがどのように実行されるかではなく、オブジェクトが何を実行するかに集中できます。 Javaでは、抽象化を実現するための2つの方法があります。抽象クラスを使用する方法とインターフェースを使用する方法です。さらに、継承はもう1つのOOPの柱です。これは、既存のクラスのデータとメソッドを使用することを指します。多重継承とは、複数のクラスのデータとメソッドを使用することを指します。インターフェイスを使用して多重継承を実装することが可能です。

抽象クラス、インターフェース、多重継承

Javaの抽象クラスとは

abstractキーワードで宣言されたクラスは、抽象クラスと呼ばれます。抽象クラスは、非抽象メソッドだけでなく抽象メソッドも持つことができます。クラスは、抽象クラスを拡張し、抽象クラスの抽象メソッドを実装できます。抽象クラスからオブジェクトを作成することはできませんが、抽象クラスを拡張するクラスからオブジェクトを作成することはできます。以下の例を参照してください。

図1:形状抽象クラス

図2:長方形クラス

図3:プログラム1のメインクラス

Shapeは抽象クラスです。抽象メソッドの描画と非抽象メソッドの表示があります。 RectangleクラスはShapeを拡張します。したがって、Rectangleクラスは抽象メソッドdrawを実装します。 main関数では、Rectangleオブジェクトが作成されます。 obj.draw()はRectangle draw()のメソッドを呼び出し、「Rectangle」を出力します。

Javaのインターフェースとは

Javaのインターフェースはクラスに似ています。インターフェイスのすべてのメソッドは抽象メソッドです。抽象クラスと同様に、インターフェイスをインスタンス化することはできません。インターフェイスは、抽象化だけでなく、多重継承の実装にも使用できます。インターフェイスは、interfaceキーワードを使用して宣言されます。インターフェイスを実装するクラスは、インターフェイスで宣言されているすべてのメソッドを実装する必要があります。抽象化を実現するためのインターフェースの使用を説明する以下の例を参照してください。

図4:形状インターフェース

図5:サークルクラス

図6:プログラム2のメインクラス

Shapeはインターフェースであり、drawと呼ばれる抽象的なメソッドがあります。 CircleクラスはShapeを拡張します。したがって、Circleクラスは抽象メソッドdrawを実装します。 main関数では、Circleオブジェクトが作成されます。 s.draw()は、Circleのdrawメソッドを呼び出し、「Circle」を出力します。

インターフェイスを使用して、多重継承を実装することもできます。

図7:インターフェースA

図8:インターフェースB

図9:クラスC

図10:プログラム3のメインクラス

インターフェイスAとBの両方に、抽象メソッドが表示されます。クラスCは、インターフェイスAとBの両方を実装します。クラスCは、メソッド表示の実装を提供します。 mainメソッドでは、Cのオブジェクトが作成されます。 obj.displayはCのdisplayメソッドを呼び出し、「HelloWorld!」を出力します。

Javaの抽象クラスとインターフェイスの違い

意味

抽象クラスは、抽象メソッドと非抽象メソッドのコレクションであるabstractキーワードで宣言されたクラスです。対照的に、Javaのインターフェースは、抽象メソッドのコレクションであるクラスに似た参照型です。これは、Javaの抽象クラスとインターフェースの基本的な違いです。

変数

使用される変数は、Javaの抽象クラスとインターフェースの違いの1つです。抽象クラスはfinal、non-final、static、およびnon-static変数を持つことができますが、インターフェイスはstatic変数とfinal変数のみを持つことができます。

メソッド

Javaの抽象クラスとインターフェースのもう1つの違いは、抽象クラスは抽象メソッドと非抽象メソッドを持つことができますが、インターフェースは抽象メソッドしか持つことができないということです。

多重継承

クラスのキーワード

また、abstractキーワードは抽象クラスを宣言するために使用されますが、interfaceキーワードはインターフェイスを宣言するために使用されます。

拡張と実装

さらに、抽象クラスは、キーワード「extends」を使用して拡張できます。インターフェイスクラスは、キーワード「implements」を使用して実装できます。

実装

さらに、抽象クラスはキーワード「implements」を使用して実装できますが、インターフェイスは抽象化と多重継承を実装するために使用されます。

結論

Javaの抽象クラスとインターフェースの違いは、抽象クラスは抽象化を実装するために使用されるのに対し、インターフェースは抽象化と多重継承を実装するために使用されることです。

リファレンス:

1.「Javaの抽象クラス–Javatpoint」。 Www.javatpoint.com、ここから入手可能2。 「Javaのインターフェース–Javatpoint」 Www.javatpoint.com、ここから入手できます。

Javaの抽象クラスとインターフェイスの違いは何ですか