041-抽象クラス-抽象クラスの定義 【新人エンジニアが最初に覚えたい100のJava文法】
ユーチューブ動画
抽象クラスについて解説します。
ソースコード
abstract class Product { private String productName; private int price; public Product(String productName, int price) { this.productName = productName; this.price = price; } public abstract void showData(); } class Printer extends Product { private int printSpeed; public Printer(String productName, int price, int printSpeed) { super(productName, price); this.printSpeed = printSpeed; } public void showData() { System.out.println(this.printSpeed); } } class Computer extends Product { private double clockFeq; public Computer(String productName, int price, double clockFeq) { super(productName, price); this.clockFeq = clockFeq; } public void showData() { System.out.println(this.clockFeq); } }
解説
抽象クラスについて解説します。
以前の動画でクラスの継承関係について、解説しました。
継承関係では、共通の機能を持つクラスをスーパークラス、スーパークラスを利用する側のクラスをサブクラスと呼んでいました。
抽象クラスは、クラスの継承関係において、スーパークラス専用のクラスと明確に宣言したいときに利用します。
具体的には、abstractとつけると、このクラスからはインスタンスはできないよ、スーパークラスで利用してねという意味合いになります。
あくまでクラスの設計の概念を明確にするだけですから、プログラムに影響することはありません。
また、ご覧のメソッドのように、抽象クラスでは、抽象メソッドを宣言できます。
抽象メソッドは、オーバーライドする専用のメソッドです。
抽象クラスの中では、処理は書きません。
サブクラス側で処理を記述してくださいというように、こちらもその概念を明確にするための方法です。
なお、抽象メソッドでは、処理を記述しないので、セミコロンで終わります。
抽象メソッドが含まれる抽象クラスを継承したサブクラス、ここでは、PrinterクラスやComputerクラスでは、必ず抽象メソッドをオーバーライドしなければいけません。
ここでは、それぞれのクラスのメンバ変数を出力しています。
実行してみましょう。
インスタンスにご覧のようなデータを入れましたので、オーバーライドされたそれぞれのメソッドが働き、実行結果が表示されます。
どうして、このような結果になったのかという点については、次の動画で詳しく解説していますので、ぜひご覧ください。
このような抽象クラスや抽象メソッドをうまく利用することで、プログラマーに、設計の意図を守らせることができるようになります。
抽象クラスや抽象メソッドにはabstractをつけることを押さえておきましょう。
以上、抽象クラスについて解説しました。
このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年11月23日「ゲシュタルト崩壊」とシステム開発
- 新入社員2024年11月23日データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていません
- 新入社員2024年11月23日「データにはなぜ型が必要なのか?」を2進数の観点から解説
- 新入社員2024年11月23日ディスプレイの解像度の意味と変更方法