基礎構文班20回目 コンストラクタ 継承
DESCRIPTION
xmlpro's Java lecture. Number 20.TRANSCRIPT
![Page 1: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/1.jpg)
XMLPro 20 回目
1
![Page 2: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/2.jpg)
ICPC お疲れ様です!!
1 年生のみなさんは 1 問目解けました?
なお私は出場しなかった模様 ()
2
![Page 3: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/3.jpg)
本日の内容
クラス継承 extendsコンストラクタ
3
![Page 4: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/4.jpg)
クラスとメソッドの復習がてら・・・
• このソースが実行できるような「 Student 」クラスを作成してくださ
い
4
![Page 5: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/5.jpg)
コンストラクタ
5
![Page 6: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/6.jpg)
コンストラクタ• コンストラクタとは「オブジェクトを
作ったとき必ず実行される部分を定義した部分」です
• ようは初期設定ができますよーってことで覚えといてください
6
![Page 7: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/7.jpg)
書いてみて
7
← コンストラクタはこの処理の時点で実行されます
![Page 8: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/8.jpg)
コンストラクタをつくろう修飾子 クラス名 (引数の型 引数名) {処理の内容}で作成できます
8
![Page 9: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/9.jpg)
書いてみて• 赤枠の中がコンストラクタです
メソッドと同じように 引数の数によって
使い分けができます
9
![Page 10: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/10.jpg)
継承
10
![Page 11: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/11.jpg)
継承とは・・・• 元になるクラスを「スーパークラス」 (super class) 、
あるいは「基底クラス」「基本クラス」 (base class) などと呼び、新たに定義されたクラスを「サブクラス」(subclass) 、あるいは「派生クラス」 (derived class) と呼ぶ。
• スーパークラスの性質はすべてサブクラスに受け継がれ、サブクラスではスーパークラスとの違いを定義するだけでよい。複数のスーパークラスから新しいクラスを定義することを多重継承という。
11
![Page 12: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/12.jpg)
• ようは継承すると「継承元のクラス」のメソッドやフィールドが「継承したクラス」で使えるようになります
12
![Page 13: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/13.jpg)
いままでのこんなんだったよね 準備→メソッド呼び出し
13
![Page 14: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/14.jpg)
いままでの
14
Sample_Normal クラス
P p1 = new P(); p1.show();で P クラスの中の show メソッドにアクセス
P クラス-show() メソッド
↓ 中身
show() 呼び出し
![Page 15: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/15.jpg)
実行結果
15
![Page 16: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/16.jpg)
書いてみて
16
継承をやってみよう
![Page 17: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/17.jpg)
エラー吐いてるよね? なぜ?
A_P クラスの中には show() メソッドがないからです
17
![Page 18: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/18.jpg)
いままでの
18
Sample_Extends クラス
A_P p1 = new A_P(); p1.show();で A_P クラスの中の show メソッドにアクセス
P クラス-show() メソッド
A_P クラス この中には show メソッド がない
show() 呼び出し
![Page 19: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/19.jpg)
追加して「クラス名 extend s 継承したいクラス」
で継承を行うことができます
extends P追加でエラー消えたよね?
19
![Page 20: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/20.jpg)
継承を行うと・・・
20
Sample_Extends クラス
A_P p1 = new A_P(); p1.show();で A_P クラスの中の show メソッドにアクセス
P クラス-show() メソッド
A_P extends P A_P クラスは P クラスの機能全てが使えるクラス
中身 in!!
呼び出し
スーパークラス
サブクラス
![Page 21: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/21.jpg)
実行結果• 継承を行ったことによって P クラスの中に
ある show() メソッドが使えます
21
![Page 22: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/22.jpg)
おまけ super. について[ 両方に同じメソッドがある場合 ]今度は A_P クラスの中にも show メソッドを作ってみてください ↓追記分
そして実行してみると・・・
22
![Page 23: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/23.jpg)
実行A_P クラスのメソッドが優先的に実行されるようになってます
23
![Page 24: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/24.jpg)
ここで・・・サブクラスにおいて、スーパークラスのインスタンスメソッドを参照したい場合に
「 super. メソッド名 (); 」
でスーパークラスのメソッドを呼び出すことができます
24
![Page 25: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/25.jpg)
いろいろ追記
25
![Page 26: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/26.jpg)
で実行
26
![Page 27: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/27.jpg)
いままでの復習がてら・・・
27
![Page 28: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/28.jpg)
問題• 生徒 2 人分の ID と名前と 3 教科の得点の
平均点を管理するクラスを作って、表示するプログラム 点数はキーボードから入力
ただし・・・・次の条件に従ってくださいな
28
![Page 29: 基礎構文班20回目 コンストラクタ 継承](https://reader036.vdocuments.net/reader036/viewer/2022081519/5589f346d8b42ab26e8b46a9/html5/thumbnails/29.jpg)
条件• オブジェクトの配列使ってください
• コンストラクタ使ってください• 出力部分はメソッドを使ってください
29