【はじめてのJava】クラスの継承と親クラス、子クラス【クラスの継承編】
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
クラスの継承編
クラスの継承編では、Javaを扱う上で重要な「クラスの継承」について扱っていきます。
前回はクラスの拡張という考え方について触れました。
今回は「クラス」の拡張について、もう少し詳しく扱っていきます。
目次
クラスの継承
前回扱った通り、Carクラスの要素をすべて内包しているPoliceCarクラスを作りたい場合、Carクラスのソースコードをコピー&ペーストしてPoliceCarクラスに反映することも可能です。
しかし、その方法では多くの問題点があるため、通常はCarクラスを拡張してPoliceCarクラスを作成します。
この、クラスの拡張のことを、Javaでは クラスの継承 と言います。
詳しく見ていきましょう。
クラスの継承とは
クラスの拡張を利用して既存のクラスを基にしたクラスを作成することを クラスを継承する と言います。
クラスを継承することで、既存のクラスに属性や機能を追加した新しいクラスを簡単に作成することができます。
例えば、Carクラスと全く同じ内容のPoliceCarクラスを作成する場合は以下のようなイメージになります。
これでもいいのですが、これではわざわざPoliceCarクラスを作成する意味があまりありません。
通常、クラスを継承する場合は、以下のように継承後のクラスに属性や操作を追加することが一般的です。
親クラスと子クラス
クラスを継承する際に継承元となるクラスを 親クラス(Superクラス) と言います。
同様に、継承先となるクラスを 子クラス(Subクラス) と言います。
前述の例では、Carクラスが親クラス、PoliceCarクラスが子クラスとなります。
クラスの継承の方法
クラスの継承のためには extendsキーワード を使います。
このextendsキーワードを、子クラスを作成する際に親クラス名と一緒に記述します。
class /* 子クラス名 */ extends /* 親クラス名 */ { /* クラスの中身 */ }
例えば、Carクラスを継承したPoliceCarクラスを作成する場合は以下の通りです。
Carクラス
class Car{ double speed; String color; void accell(){ /* 省略 */ } }
PoliceCarクラス
class PoliceCar extends Car{ /* 省略 */ }
なお、PoliceCarクラスをコンパイルするためにはCarクラスが必要です。(PoliceCarクラスに対してCarクラスが認識できるようにする必要があります。)
よくわからない場合やうまくコンパイルできない場合はCar.javaとPoliceCar.javaを同じディレクトリに保存し、コンパイルを実行してください。
例えばパッケージ名のつけ間違いやインポート忘れ、Carクラスの配置場所がPoliceCarクラスから認識できない場合、コンパイルエラーとなります。
まとめ
クラスの継承にはextendsキーワードを用いる
継承元のクラスを「親クラス」「Superクラス」という
継承先のクラスを「子クラス」「Subクラス」という
次回
次回は実際にCarクラスを継承したPoliceCarクラスを作成していきます。
はじめてのJavaシリーズの目次はこちら
クラスの継承編はこちら