■クラスの継承
▼クラスの継承
既存のクラスに機能を付け加えて、新たなクラスを定義すること。
継承元のクラスをスーパークラスと呼び、継承先のクラスをサブクラスと呼ぶ。
▼クラスの継承の書き方
class スーパークラス名 {
スーパークラスの処理
}
class サブクラス名 extends スーパークラス名 {
サブクラスの処理
}
■メソッドのオーバーライド
継承元のクラス(スーパークラス)から継承したメソッドの処理内容が、継承先のクラス(サブクラス)の用途に合わない場合、処理の内容をオーバーライド(上書き)することができる。
オーバーライドする場合は、スーパークラスのメソッドと同じ名前のメソッドをサブクラスで定義する。
▼オーバーライドの書き方
class スーパークラス名 {
public void hoge() {
メソッドの処理
}
}
class サブクラス名 extends スーパークラス名 {
public void hoge() {
メソッドの処理
}
}
■今回作成するプログラムの仕様
今回作成するプログラムは入力する値(文字列型と整数型)を表示するプログラムを作成する。
▼処理内容
・入力名と入力値を表示するクラス(スーパークラス)
▼メンバ変数
入力名の変数(文字列)
入力値の変数(整数)
▼入力した情報を出力するメソッド
入力名を表示
入力値を表示
▼コンストラクタ
入力名を設定
入力値を設定
・追加分の入力値を表示するクラス(サブクラス)
▼メンバ変数
追加分の入力値変数(整数値)
▼入力した情報を出力するメソッド(オーバーライド)
スーパークラスの入力した情報を出力するメソッドを実行する。
追加分の入力値を表示
▼コンストラクタ
スーパークラスのコンストラクタ呼び出し
追加分の入力値を設定
・メイン処理
スーパークラスをインスタンスし、入力した情報を出力するメソッド(オーバーライド)を実行する。
■サンプルコード
// 入力名と入力値を表示するクラス(スーパークラス)
class ShowNum{
// メンバ変数定義
protected String name; // 入力名の変数
protected int num; // 入力値の変数
// 入力した情報を出力するメソッド
public void show() {
System.out.println("入力名:" + name);
System.out.println("入力値:" + num);
}
// コンストラクタ
public ShowNum(String input_name, int input_num) {
this.name = input_name;
this.num = input_num;
}
}
// 追加分の入力値を表示するクラス(サブクラス:ShowNumクラスを継承)
class ExShowNum extends ShowNum {
// メンバ変数定義
private int next_num; // 追加分の入力値変数
// 入力した情報を出力するメソッド
public void show() {
super.show();
System.out.println("入力値(追加分):" + next_num);
}
// コンストラクタ
public ExShowNum(String input_name, int input_num, int input_next_num) {
super(input_name, input_num); // super()でスーパークラスのコンストラクタ呼び出し
this.next_num = input_next_num;
}
}
public class Sample{
public static void main(String[] args) {
// ExShowNumクラスをインスタンス
ExShowNum num1 = new ExShowNum("hoge", 2, 4);
num1.show();
}
}
・補足事項
▼protected
他のクラスからは使用できないが、継承先のクラス(サブクラス)では利用できる。
▼super()
継承元(スーパークラス)の処理を使用する場合はsuper()を使用する。
■実行結果
入力名:hoge
入力値:2
入力値(追加分):4
コメント
[…] 【Java】クラスの継承とメソッドのオーバーライドのやり方■クラスの継承▼クラスの継承既存のクラスに機能を付け加えて、新たなクラスを定義すること。継承元のクラスをスーパーク […]