【はじめてのJava】クラスを設計する【クラスの継承編】
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
クラスの継承編
クラスの継承編では、Javaを扱う上で重要な「クラスの継承」について扱っていきます。
今回からは今まで出てきた内容を基に、クラスの整理方法を考えていきます。
目次
クラスを整理する
クラスの継承を使うと、既存のクラスを拡張子新しいクラスを定義することができました。
例えば、「自動車(Car)」クラスを基にして「パトカー(PoliceCar)」クラスや「救急車(Ambulance)」クラスを定義することができます。図にすると以下のようなイメージです。
この時、「PliceCar」も「Ambulance」も「Carの一種である」ということができます。
この「Carの一種である」という考え方が、オブジェクト指向でプログラムを書く際に非常に重要な考え方になります。どういうことでしょうか。
クラスの継承と柔軟性
「PoliceCarもAmbulanceもCarの一種である」という考え方はとても重要です。どういうことでしょうか。
Carの一種だと考えられない場合
「PoliceCarやAmbulanceはCarの一種である」と考えられない世界を考えてみましょう。
この場合CarはCar、PoliceCarはPoliceCar、AmbulanceはAmbulanceとして取り扱うことになります。
一見すると当たり前のことのように感じるかもしれません。しかしこれは、裏を返せば「PoliceCarはCarとして取り扱うことができない」ということにもなります。
例えば「Carが通れる道路」があったとしても、そこを「PoliceCar」や「Ambulance」が通ることはできないわけです。
これでは困ってしまいますね。
Carの一種だと考えられる場合
では「PoliceCarやAmbulanceはCarの一種である」と考えられる世界ではどうでしょうか。
この場合、「Carが通れる道路」であれば「PoliceCar」や「Ambulance」も通ることもできるわけです。
この考え方を使えば、柔軟にプログラムを作成することができそうです。
ところで、プログラミング中ではどのように「PoliceCarがCarの一種である」ことを示せばよいでしょうか。
PoliceCarをCarの一種であると捉える方法
Javaの場合、「PoliceCarがCarの一種である」ことを示す際にはクラスの継承やインターフェイスを目印にします。
あるクラスを継承していたり、あるインターフェイスを実装している場合、元のクラスやインターフェイスの派生形の一種ととらえるのです。
「Carクラスを継承しているから Carの一種だ 」と捉えるわけです。
public class XXX extends Car{ //Carクラスを継承しているのでCarの一種 //省略 }
まとめ
クラスの継承を使うとクラス設計が柔軟になる(詳しくは次回の記事も参照)
次回
次回もクラスの設計について扱います。ポリモフィズムについて考えてみます。
はじめてのJavaシリーズの目次はこちら
クラスの継承編はこちら