【はじめてのJava】クラスの抽象化【クラスの継承編】
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
クラスの継承編
クラスの継承編では、Javaを扱う上で重要な「クラスの継承」について扱っていきます。
前回は、ポリモフィズムの裏側を説明してきました。
今回はクラスの抽象化について考えてみます。なお、この内容はJava Silverよりも少し高度な内容です。
目次
クラスの設計
プログラムを作るときに、いきなりソースコードの作成を始めることはまずありません。通常はまずプログラムの全体像やクラスの設計図を考えます。
今回はクラスの設計に注目して考えます。
親クラスから考える
いままでクラスの継承について説明をしてきました。例えば、クラスの設計の記事では、Carクラスを基に、Carクラスを継承したPoliceCarクラスやAmbulanceクラスを考えました。
クラスを設計するときにはこのように、親クラスを基にして、それを拡張したサブクラスを考えることもできます。
では、逆に、この「親クラス」を作りたい場合はどうすればいいのでしょうか。
親クラスを考える(抽象化)
実は親クラスにもある程度作り方があります。
例えば「PoliceCar」クラスと「Ambulance」クラスを全く別々のクラスとして作ったとしましょう。
それぞれ、変数としてspeed、fuelを、メソッドとしてaccell()、brake()があるとします。
この場合、「それぞれのクラスに共通した項目」をまとめます。
それらの特徴をまとめてみると、「PoliceCar」と「Ambulance」の共通の特徴を持った「何か」ができます。
この「何か」をクラスとしてまとめると、そのクラスには「PoliceCar」と「Ambulance」の特徴がまとめられたことになります。
2つのクラスの特徴がまとめられているクラス、ということはすなわち「PoliceCar」と「Ambulance」の親クラスということができます。
このように既存のクラスの特徴をまとめて基となるクラス(概念)を導き出すことを 抽象化 と言います。
まとめ
既存のクラスの共通の特徴をまとめることで、それらのクラスの親クラスとなるクラスを定義することができる(抽象化)
次回
次回もクラスの設計について考えてみます。
はじめてのJavaシリーズの目次はこちら
クラスの継承編はこちら