13 Person p p public class Student String
継承の例(1/3) Personは「人」 を表していた. p 人のより特殊な 概念として「学 生」を考える. p public class Student { String name; double height; double weight; String id; // 学籍番号 int grade; // 学年 Person クラスと 共通 String get. ID() { return id; } int get. Grade() { return grade; } double get. BMI() { return weight / (height * height); } }
継承の例(3/3) p main()メソッド内の書き方は親クラスと同様. インスタンスの生成× 2 public static void main(String[] args) { Student p 1 = new Student(); p 1. set. Height(1. 7); p 1. set. Weight(65); set. Height()と Student p 2 = new Student(); set. Weight()は p 2. set. Height(1. 6); Studentクラスに p 2. set. Weight(55); 定義されていない double bmi 1 = p 1. get. BMI(); ことに注意! double bmi 2 = p 2. get. BMI(); System. out. println(bmi 1); System. out. println(bmi 2); }
継承がある場合のメソッド呼び出し(1/2) p デバッガを使って追いかけてみる. public static void main(String[] args) { Student p 1 = new Student(); p 1. set. Grade(1); Personクラスと p 1. set. Height(1. 7); Studentクラスの p 1. set. Weight(65); いずれが呼び出さ Student p 2 = new Student(); れるか? p 2. set. Grade(2); p 2. set. Height(1. 6); p 2. set. Weight(55); double bmi 1 = p 1. get. BMI(); double bmi 2 = p 2. get. BMI(); int grade 1 = p 1. get. Grade(); int grade 2 = p 2. get. Grade(); System. out. println(grade 1 + ", " + bmi 1); System. out. println(grade 2 + ", " + bmi 2); }
継承がある場合のメソッド呼び出し(2/2) p 子クラスにメソッドが定義されていない場合,親クラ スのメソッドが代わりに呼ばれる. public static void main(String[] args) { Student p 1 = new Student(); Studentクラス p 1. set. Grade(1); p 1. set. Height(1. 7); Personクラス p 1. set. Weight(65); (Studentクラスに定義さ Student p 2 = new Student(); れていないが,親クラス p 2. set. Grade(2); であるPersonクラスに定 p 2. set. Height(1. 6); 義されている.) p 2. set. Weight(55); double bmi 1 = p 1. get. BMI(); double bmi 2 = p 2. get. BMI(); int grade 1 = p 1. get. Grade(); int grade 2 = p 2. get. Grade(); System. out. println(grade 1 + ", " + bmi 1); System. out. println(grade 2 + ", " + bmi 2);
継承がある場合のメソッド呼び出しの まとめ p 子クラス側からみて最初に見つかったメソッドが呼 び出される. 親クラス側 子クラス側 Person Student double height; double weight; double get. Height(); double get. Weight(); double get. BMI(); int grade; double get. BMI(); int get. Grade();
- Slides: 12