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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能④
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能③
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能②
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能①