【Java入門】インターフェースとは?抽象クラス(abstract)との違い

【Java入門】インターフェースとは?抽象クラス(abstract)との違い

Java学習で初心者の方がつまずきやすいポイントとして、「インターフェース」と「抽象クラス(abstract)」が挙げられます。両者は部分的に似た性質を持っているものの、厳密には異なります。Javaで中・上級者にレベルアップするためには、この使い方を理解することが大切です。今回はインターフェースと抽象クラスの違いや、使い分けについてご紹介します。

IT研修を、もっと自由に。御社に合わせた内容・期間・費用でご提案します。

https://www.internetacademy.jp/

品質の高さはもちろん、一社一社のご要望に合わせた研修が実施できるからこそ、次代を見据えた企業の人事担当者やトップリーダーに選ばれ続けてきました。サイトリニューアル研修から英語研修、ITコンサルティングまで幅広く対応・ご提案致します。

目次

Javaの「インターフェース(interface)」とは?

Javaの「インターフェース(interface)」とは?

Javaで使われるインターフェースとは、クラスに含まれるメソッドの具体的な処理内容を記述せず、変数とメソッドの型のみを定義したものです。以下のようにインターフェースを宣言および実装を行います。

【インターフェースの宣言】

interface インターフェース名{}

【インターフェースの実装】

class クラス名 implements インターフェース名{}

インターフェースには、メソッドの具体的な処理内容を記述しないため、メソッドの型だけを先に記述しておき、メソッドを利用する直前で処理内容を記述するという使い方ができます。

クラスの継承では、継承元であるスーパークラス(親クラス)は1つに限られていましたが、インターフェースにはそのような制限はありません。複数のインターフェースを継承して新しいインターフェースを作る(多重継承する)ことができます。

Javaの「抽象クラス(abstract)」とは?

Javaの「抽象クラス(abstract)」とは?

Javaのインターフェースと混同されやすい概念が「抽象クラス」です。abstract(抽象)とも呼ばれ、抽象メソッドを1つ以上持つクラスを指します。抽象メソッドは具体的な処理内容を記述せず、メソッド名や引数などの定義だけを宣言するメソッドです。

抽象クラスと抽象メソッドの書式は、以下の通りです。

【抽象クラスの宣言】

abstract class クラス名{}

【抽象メソッドの宣言】

abstract 戻り値の型 メソッド名(引数の型 引数名);

抽象クラスは、メソッドのオーバーライドができるというメリットがあります。オーバーライドとは、親クラスのメソッドをサブクラスで書き換える(上書きする)ことです。

抽象メソッドのオーバーライドによって、例えば、コーディングの時点ではどこに挿入するかは決まっていないものの、いずれ必要となるメソッドをあらかじめ宣言しておき、詳細は後のクラスで定義する、というコーディングが可能です。

ただし、抽象クラスは通常のクラス(具象クラス)とは違い、直接インスタンス化することはできません。また、インターフェースのような多重継承もできません。

インターフェースと抽象クラスの使い分け

インターフェースと抽象クラスの使い分け

インターフェースや抽象クラスは、メソッドの具体的な処理内容を記述しないことから、両者に違いはないように思えるかもしれませんが、インターフェースはクラスで共通する仕様を定義するとき、抽象クラスは他のクラスの処理の骨組みを定義するときに利用されます。
以下の具体例を通して、インターフェースと抽象クラスの使い分けを理解しましょう。

インターフェースの具体例

音楽ファイル再生プログラムを作るため、インターフェースでプログラムの再生・停止などの機能(メソッド)の存在を示し、具体的な再生機能は各メソッドに記述します。

抽象クラスの具体例

三角形や四角形という概念を拡張した「多角形クラス」を抽象クラスとして定義し、面積を求める機能の存在を抽象メソッドで宣言します。抽象メソッドには、具体的な面積の求め方は記述しません。
「多角形クラス」を継承して、三角形の面積を求める機能を持つ「三角形クラス」や四角形の面積を求める機能を持つ「四角形クラス」を作ります。

おわりに

今回はインターフェースと抽象クラスについて取り上げました。初心者の方はインターフェースと抽象クラスの考え方を理解した後、インターフェースを使って書かれたプログラム、抽象クラスを使って書かれたプログラムを見比べてみることから始めてみましょう。

インターネット・アカデミーでは、インストラクターと1対1で講義が受けられるマンツーマン授業を受講することができます。「Javaの文法がよく理解できない」「Javaを一通り学んだが自信を持てない」という方は、ぜひマンツーマン授業をお試しください。苦手分野や疑問を効率よく克服しながら、あなたに最適なペースでJavaを学ぶことができます。

Webデザイン・プログラミングスクール インターネット・アカデミー

関連記事

【Java入門】継承とは?「クラスの継承」でできること

関連講座

Java講座 ITエンジニア総合コース