• 検索結果がありません。

Java プログラミング入門

N/A
N/A
Protected

Academic year: 2021

シェア "Java プログラミング入門"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

Java プログラミング入門

—継承・オーバーライド —

Waseda University

(2)

継承

継承

共通した処理をスーパークラス(親クラス)としてまとめ、サブクラス (子クラス)にコードの再利用や機能の追加を行うための技法

スーパークラス(親クラス)のフィールド、メソッドを引き継ぐこと が出来る

コンストラクタは継承されない

継承の文法

修飾子 class サブクラス名 extendsスーパークラス名 { クラスの本体

(3)

スーパークラス ( 親クラス ) の例

Person

クラス

“名前”、“身長”、“体重”、“年齢”を管理し、すべてのデータを表示する メソッドを持つPersonクラスを定義せよ。

Person.java

public class Person { String name;

double height, weight;

int age;

public Person(){

.. . }

public Person(String s, double h, double w, int a){

.. . }

public void print(){

.. . } }

(4)

スーパークラス ( 親クラス ) の例

Person.java

public class Person { String name;

double height, weight;

int age;

public Person(){

name = ""; height = 0.0; weight = 0.0; age = 0;

}

public Person(String s, double h, double w, int a){

name = s; height = h; weight = w; age = a;

}

public void print(){

System.out.println("name : " + name);

System.out.println("height : " + height + " cm");

System.out.println("weight : " + weight + " kg");

System.out.println("age : " + age + " years old");

}

(5)

Person クラスを継承

Student.java

public class Student extends Person{

String id;

public static void main(String[] args){

Student st1 = new Student();

st1.name = "Frank";

st1.height = 175.0;

st1.weight = 63.0;

st1.age = 18;

st1.id = "1w00B000";

st1.print();

} }

実行例

name : Frank height : 175.0 cm weight : 63.0 kg age : 18 years old

(6)

継承された個所

Person.java

public class Person { String name;

double height, weight;

int age;

public Person(){

name = ""; height = 0.0; weight = 0.0; age = 0;

}

public Person(String s, double h, double w, int a){

name = s; height = h; weight = w; age = a;

}

public void print(){

System.out.println("name : " + name);

System.out.println("height : " + height + " cm");

System.out.println("weight : " + weight + " kg");

System.out.println("age : " + age + " years old");

}

(7)

オーバーライドと super 参照

print

メソッドの拡張

Personクラスのprintメソッドは名前、身長、体重、年齢を表示させる。

Studentクラスのprintメソッドは名前、身長、体重、年齢、IDを表示さ せたい

メソッドの書き換え オーバーライド

Personクラスのprintメソッドの参照 superを使った参照

メソッドのオーバーライド

サブクラスのメソッドと同じ名前、同じ引数を持つメソッドをスーパー クラスで定義し、書き換える機能

super

サブクラスがスーパークラスのインスタンスのフィールド、メソッドを 参照するときに用いる

(8)

オーバーライドの例

Student.java

public class Student extends Person{

String id;

@Override

public void print(){

super.print();

System.out.println("id : "+ id );

}

public static void main(String[] args){

Student st1 = new Student();

st1.name = "Frank";

st1.height = 175.0;

st1.weight = 63.0;

st1.age = 18;

st1.id = "1w00B000";

st1.print();

}

(9)

コンストラクタの例

Student.java

public class Student extends Person{

String id;

public Student(){

super();

}

public Student(String n, double h, double w, int a){

super(n, h, w,a);

}

public Student(String n, double h, double w, int a, String sID){

super(n, h, w,a);

id =sID;

}

@Override

public void print(){

super.print();

System.out.println("id : "+ id );

} }

(10)

コンストラクタの例

SampleStudent.java

public class SampleStudent {

public static void main(String[] args){

Student st1 = new Student("Frank", 175.0, 63.5,18);

st1.id = "1w00B000";

st1.print();

Student st2 = new Student("Thomas", 177.0, 72.0,18,"1w00C000");

st2.print();

} }

(11)

super でコンストラクタを参照する場合の注意点

コンストラクタでの注意点

サブクラスでスーパークラスのコンストラクタを参照する場合 必ず一行目に書かなければならない。

public Student(String n, double h, double w, int a, String sID){

super(n, h, w,a);

id =sID;

}

参照

関連したドキュメント

mainメソッドが存在しません public static void main(String[]) が存在していない。

mainメソッドが存在しません public static void main(String[]) が存在していない。

public static void main(String[] args) {

まだ,この時点では配列のサイズは確定していない 特別な値 null

Body 型の person という変数名が使用できる この段階では変数 person の実体は存在しない.

入力されたファイル名 ”sample_number.txt” を String 型の変数 filename に設定. FileWriter fw =

GUI (Graphical User Interface) を作成するため, Java のライブ ラリを用いる... AWT ( Abstract Windowing

  RMI とは Remote Method Invocation の略であり、Java