040-オブジェクトの拡張-継承とオーバーライド【新人エンジニアが最初に覚えたい100のJava文法】
ユーチューブ動画
継承とオーバーライドについて解説します。
ソースコード
class Product {
private String productName;
private int price;
public Product(String productName, int price) {
this.productName = productName;
this.price = price;
}
public void showData() {
System.out.println(this.productName);
System.out.println(this.price);
}
}
class Printer extends Product {
private int printSpeed;
public Printer(String productName, int price, int printSpeed) {
super(productName, price);
this.printSpeed = printSpeed;
}
public void showData() {
super.showData();
System.out.println(this.printSpeed);
}
}解説
継承とオーバーライドについて解説します。
共通したクラスを作るときには、継承を利用します。
継承するとサブクラスは、スーパークラスの内容を引き継ぎますが、場合によっては、一部だけを改良したいということもでてきます。
そのとき、今回ご紹介するオーバーライドを使うと、必要な差分だけをプログラミングすることができます。
サンプルコードを確認しましょう。Productクラスを継承して、Printerクラスが定義されています。
Productクラスがスーパークラス、Printerクラスがサブクラスになります。
オーバーライドを成立させるためには、戻り値の型、メソッドの名前、引数リストを同じにします。
showDataメソッドに注目すると、同じになっています。つまり、showDataメソッドはオーバーライドしているといえます。
オーバーライドすると、メソッドの処理を上書きしてしまいます。
スーパークラスの処理も実行したいというときには、super.〜と記述することで、
スーパークラスのメソッドを呼び出すことができます。
PrinterクラスのインスタンスからshowDataメソッドを呼び出すと、
まずはサブクラスのshowDataメソッドが呼び出されて、super.showDataが実行されます。
メンバ変数のproductNameやpriceを出力すると、サブクラスのメソッドに戻ってきます。
サブクラスのメンバ変数であるprintSpeedを出力して、終了します。
サンプルコードにはありませんが、Productクラスを継承する別のクラスを定義しても、同じように差分をプログラミングすることができます。
ここではご覧のようなComputerクラスを作成しました。
メンバ変数に周波数が定義されています。
Printerクラスと同じようにshowDataメソッドをオーバーライドして、差分をプログラミングすることができます。
いかがでしたか?オーバーライドはメソッドの処理の上書きです。
戻り値の型・メソッドの名前・引数リストが同じとくれば、オーバーライドと覚えておきましょう。
以上、継承とオーバーライドについて解説しました。
このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
山崎講師2026年1月12日生成モデル、識別モデル、識別関数の違い
山崎講師2026年1月12日AIが賢くなる秘密の数式?ベイズの定理で「データから正解」を導き出す方法
山崎講師2026年1月11日【NumPy応用】乱数を操る!choiceとshuffleを使いこなして脱・初心者を目指そう
山崎講師2026年1月11日【完全攻略】Axis=0と1の呪いを解く!「縦か横か」迷わなくなる直感的イメージ法