【Java開発】第7回 継承

Java入門講座

初めに

皆さん。こんにちは!

DreamHanksの254cmです。

今回は継承について説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第6回 コンストラクタです。

 

クラスの継承

継承は既存のクラスに機能を追加したり、再定義して新しいクラスを定義することです。

継承元のクラスは「基底クラス」、「スーパークラス」、「親クラス」と呼んで

継承先のクラスは「派生クラス」、「サブクラス」、「子クラス」と呼びます

四角形は正方形、長方形、ひし形などの四角形がありますが、

上記の正方形、長方形、ひし形は四角形の特性を共有しています。

ですが、四角形の特性以外にも個別の特性を持っています。

クラスの継承を四角形に例えると四角形は「親クラス」

正方形、長方形、ひし形は「子供クラス」になります。

image.png

 

サンプル

動物を親クラスとして、犬と猫を子供クラスとしてプログラムを作成すると、

 

上記のように親クラスを利用して子供クラスを作成することができます。

上記のクラスをほかのクラスで使用してみると、

 

上記のようにDogクラスとCatクラスにフィールドを作成しなくても

Animalクラスのフィールドを使用することができます。

 

super

superとは?

superは継承元のクラスのインスタンスを参照する変数です。

thisが自分のインスタンスを参照することと似ています。

 

サンプル

 

上記のようにsuperキーワードを使うと親クラスのフィールドまたはメソッドに接続できます。

 

 

this()とsuper()

this()とは?

this()はコンストラクタの中でほかのコンストラクタを呼び出すメソッドです。

 

上記のようにthis()キーワードを利用してほかのコンストラクタを呼び出すことができます。

つまり、上記のthis()とthis(taste)はLemon()とLemon(taste)と同じ意味になります。

上記のクラスを下記のようなクラスで生成してると、

実行結果は

上記のようになります。

※コンストラクタはクラスのインスタンスが生成されるときに呼び出されるので、

インスタンスの生成が終わっていない時点でほかの処理があればエラーが発生してしまいます。

this()が終了される前にはインスタンスが生成されていない時点です。

つまり、this()の前には処理が存在してはいけません。

super()とは?

super()はsuperと同じように親クラスのコンストラクタを呼び出すキーワードです。


上記のようにsuper()を使用すると親クラスのコンストラクタを呼び出すことができます。

子供クラスが生成されるとき、子供クラスは親クラスの要素を使うために親クラスの

コンストラクタを呼び出します。今までのサンプルでは親クラスのコンストラクタを

呼び出すサンプルは上記のサンプルしかありませんが、問題なく実行できました。

なぜかというと、子供クラスのコンストラクタにはsuper()が隠されています。

したがって、上記のサンプルのように親クラスのコンストラクタがデフォルトコンストラクタ

あるいは引数を持つコンストラクタではなかった場合、子供クラスで

直接親クラスのコンストラクタを呼び出さなければなりません。

サンプル1

 

サンプル2

 

サンプル3

 

終わりに

今回の記事は以上になります。

次回はJavaの配列を学びましょう。

ご覧いただきありがとうございます。

 

 

Java入門講座
スポンサーリンク
dreamhanksをフォローする
スポンサーリンク
DreamHanks Blog

コメント