プログラミング

【Java初心者必見】抽象クラスとオーバーライドの基礎を抑えよう。

プログラミング
この記事は約3分で読めます。
Sponsored Links

抽象とは

Schutzengelchen, 天使, フィギュア, かわいい, セラミック, アート, 守護天使, 希望

抽象クラスとは、「抽象的なメソッドが1つ以上入ったクラス」のことです。実は、メソッドには具体的な処理がなされてないものも定義可能です。このようなメソッドが1つ以上あるクラスを抽象クラスと言います。「抽象クラス」を定義しておくことで、共通で使用する「メソッド」の書き忘れを防ぐことができます。

抽象クラス・抽象メソッドの作成方法

休日, カエル, おかしい, 数字, 旅行, モバイルホーム, 休日のキャンプ, 夏
public abstract class Animal {

  public abstract void cry();

}

抽象メソッドを定義するには、「メソッド名だけ」を記述します。抽象メソッドの具体的な実装内容についてはサブクラス側に委ねます。抽象メソッドが実装されたクラスは、抽象クラスとして定義する必要があります。抽象クラスは実装内容が不正確なので、インスタンス化できないという特徴があります。

//コンパイルエラー
Animal animal_1 = new Animal();

//OK
Animal animal_2 = null;

//OK
Animal animal_3 = new Sample();

抽象クラス自体はインスタンス化できませんが、参照型変数やnullを参照先としてもつことは可能です。

抽象クラスの継承

鳥, 木, 数字, おかしい, 動物, スプリング, カラフルです
public abstract class Bird extends Animal {
	
}

抽象クラスの継承には2種類があります。①抽象クラスから抽象クラスに継承する場合 ②抽象クラスから通常クラスに継承する場合の2つです。①の場合は、サブクラスも抽象クラスとなります。②の場合は、抽象クラスにあるメソッドをサブクラスにて定義し直し、具体的な処理内容を記載する必要があります。これをオーバーライドと言います。

オーバーライド

自転車, サイクル, スポーツ, サイクリング, ライフスタイル, マウンテンバイク, 乗る, 屋外

オーバーライドとは

オーバーライド とは、親クラスで定義されたメソッドを子クラスで再定義することです。抽象クラスの継承などでよく使われます。オーバーライドしていること明示的にするために「@Override」のアノテーションをつけます。このアノテーションをつけると、「メソッド名を間違っていた」などのケアレスミスを防ぐことができます。オーバーロードと名前が似ているので間違えないようにしましょう。

オーバーライド時のルール

オーバーライドをする際は3つのルールがあります。①シグニチャ(メソッド名と引数)が同じであること ②戻り値は同じか子クラスであること ③アクセス修飾子は同じ、もしくは よりゆるい物であることです。②③は忘れやすいので覚えておくようにしましょう。

最後に

個人で開発する際は抽象クラスを実装することは少ないですが、大規模開発になると抽象開発は必須で出てきます。用途とルールを理解して、使用するようにしましょう。

タイトルとURLをコピーしました