おぼえがき_クラスの継承
継承
新しくクラスを作るときに、既にあるクラスの機能を受け継ぐこと
書き方
class 新クラス名 extends 継承したいクラス名
親クラス(スーパークラス)
継承の元になるクラス
子クラス(サブクラス)
継承して新しく作るクラス
継承すると子クラスは、親クラスのメンバー(フィールドとメソッド)を引き継ぐ。
class Calc {
int m = 1;
int sum(int i){
return i + m;//...(4)
}
int sum2(int i){
return i-m;//...(7)
}
}class Multiply extends Calc{
void sum3(int i,int j){
int k = sum(i);//...(3)(5)
int n = sum2(j);//...(6)(8)
System.out.println("mの値:" + m);//...(9)
System.out.println("結果:" + (k*n));//...(10)
}
}public class sample19{
public static void main(String[] args){
Multiply multi = new Multiply();//...(1)
multi.sum3(5,4);//...(2)
}
}
実行結果
mの値:1
結果:18
流れ
(1)Calc型を継承したMultiply型のmultiオブジェクトを作る。
(2)multiオブジェクトのsum3メソッドに引数5と4を渡す。
(3)引数5を親クラスCalcのsumメソッドに渡す。
(4)引数5に1を足して6を返す。
(5)変数kに6が入る。
(6)引数4を親クラスCalcのsum2メソッドに渡す。
(7)引数4に1を引いて3を返す。
(8)変数nに3が入る。
(9)親クラスCalcのフィールドのmの値(1)を出力する。
(10)Multiplyのフィールドのkとnをかけた値(3x6=18)を出力する。
継承してできたクラスをさらに継承する例
class Calc {
int m = 1;
int sum(int i){
return i + m;//...(5)(13)
}
int sum2(int i){
return i-m;//...(8)(16)
}
}class Multiply extends Calc{
void sum3(int i,int j){
int k = sum(i);//...(4)(6)
int n = sum2(j);//...(7)(9)
System.out.println("mの値:" + m);//...(10)
System.out.println("結果:" + (k*n));//...(11)
}
}class ExMultiply extends Multiply{
void sum4(int i,int j){
sum3(i,j);//...(3)
int k = sum(i+2);//...(12)(14)
int n = sum2(j+2);//...(15)(17)
System.out.println("ex mの値:"+ m);//...(18)
System.out.println("ex 結果:"+(k*n));//...(19)
}
}public class sample19{
public static void main(String[] args){
ExMultiply ex_multi = new ExMultiply();//...(1)
ex_multi.sum4(5,4);//...(2)
}
}
実行結果
mの値:1
結果:18
ex mの値:1
ex 結果:40
流れ
(1)Calc型を継承したMultiply型を継承したExMultiply型のmultiオブジェクトを作る。
(2)multiオブジェクトのsum4メソッドに引数5と4を渡す。
(3)引数5と4を親クラスMultiplyのsum3メソッドに渡す。
(4)引数5を親クラスCalcのsumメソッドに渡す。
(5)引数5に1を足して6を返す。
(6)変数kに6が入る。
(7)引数4を親クラスCalcのsum2メソッドに渡す。
(8)引数4に1を引いて3を返す。
(9)変数nに3が入る。
(10)親クラスCalcのフィールドのmの値(1)を出力する。
(11)Multiplyのフィールドのkとnをかけた値(3x6=18)を出力する。
(12)変数iの値5に2を足して7を親クラスCalcのsumメソッドに渡す。
(13)引数7に1を足して8を返す。
(14)変数kに8が入る。
(15)変数jの値4に2を足して6を親クラスCalcのsum2メソッドに渡す。
(16)引数6に1を引いて5を返す。
(17)変数nに5が入る。
(18)親クラスCalcのフィールドのmの値(1)を出力する。
(19)ExMultiplyのフィールドのkとnをかけた値(8x5=40)を出力する。