http://www.xmlpro.org/ ↑ 講義資料のダウンロードは ↑ ブログの「講義資料」から 第6回 クラスとインスタンス 参考書:スッキリわかるJava入門 第2版 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 仮想世界の作り方 ①現実世界を分析 ②登場人物のデータと振る舞いを考える ③クラスとしてプログラムに落とし込む ④インスタンスを生み出し、動かす クラス⇒インスタンス Javaでインスタンスを生み出すには ①クラスを定義する ②そのクラスに基づいてインスタンスを生み出す という手順が必要。 インスタンスを直接定義することはできない。 mainメソッドがあるクラス mainメソッドはJavaのプログラムに必須であるが 現実世界の何かを模したものではない ⇒独立させておくことが望ましい 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 クラスの宣言 ファイル名 クラス名.java ソースコード 修飾子 class クラス名{ } 属性の宣言 修飾子 class クラス名{ 型 変数名; 型 変数名 = データ; } 操作の宣言 修飾子 class クラス名{ 修飾子 戻り値の型 メソッド名(引数リスト){ 処理; } } this 「自分自身の」というような意味 クラスの中で変数名につけると インスタンス自身のフィールドであることを意味する this.変数名 this 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 インスタンスの作り方 例にもれず、どちらでも可 クラス名 インスタンス名; インスタンス名 = new クラス名(引数リスト); クラス名 インスタンス名 = new クラス名(引数リスト); クラス型 クラスを定義すると、そのクラスの型が利用できるようになる インスタンスの型は生み出し元のクラス型 インスタンスも参照型変数 クラス名 インスタンス名; インスタンス名 = new クラス名(引数リスト); クラス名 インスタンス名 = new クラス名(引数リスト); インスタンスの使い方 フィールドの利用 インスタンス名.フィールド名 メソッドの呼び出し インスタンス名.メソッド名(引数リスト) 実演① 実演① 実演① 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 コンストラクタ そのクラスのインスタンスが作られた直後に 自動実行される処理 コンストラクタと見なされる条件 • メソッド名がクラス名と完全に等しい • 戻り値の型が存在しない コンストラクタと見なされる条件 コンストラクタが呼び出されるタイミング インスタンスが作られた直後 ≒ newした直後 Soldier tarou = new Soldier(); コンストラクタのオーバーロード コンストラクタはオーバーロード可能 もちろん、引数を扱うことも可能 実演② 実演② 実演② 暗黙のコンストラクタ コンストラクタが1つも定義されていないときは、 「引数なし、処理内容なし」のコンストラクタ の定義が自動的に追加される 実演③ 実演③ 実演③ 実演③ 他のコンストラクタを呼ぶ コンストラクタの先頭でのみ、 別のコンストラクタを呼び出すことができる this(引数リスト); 実演④ 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 静的メンバ 「実体がクラスに属するフィールド」と 「実体がクラスに属するメソッド」の総称 静的メンバの特徴 • 実体がクラスに属する • インスタンスを1つも生み出さなくても利用可能 • そのクラスから生み出されたインスタンスすべてが 静的メンバの分身を持つ 静的メンバの作り方 フィールド static 型 変数名; メソッド static 戻り値の型 メソッド名(引数リスト){ } 静的メンバの使い方 クラス名.静的フィールド名 クラス名.静的メソッド名(引数リスト); または インスタンス名.静的フィールド名 インスタンス名.静的メソッド名(引数リスト); 実演⑤ 実演⑤ 実演⑤ 静的メソッドの注意点 静的メソッドの中では staticが付いていないフィールドやメソッドは利用できない 実演⑥ 目次 • 仮想世界の作り方 • クラスの定義方法 • インスタンスの利用方法 • コンストラクタ • 静的メンバ • 演習 演習① 以下に示す条件に従って、Mageクラスを作成せよ。 ①名前、HP、MP、魔法攻撃力を保存するフィールドを持つ。 ②Mageたちで共有している結晶の数を保存する静的フィールドを持つ。 初期値は10。 ③4つのフィールドに自動で値を入れてくれる引数無しのコンストラクタ と、名前を自分で決められる引数ありのコンストラクタを持つ。 演習① ④結晶の数を出力する静的メソッドを持つ。 ⑤呼び出すとMPを回復するメソッドを持つ。 ⑥引数ぶんのMPを消費して、魔法攻撃力*MPの値を返す メソッドを持つ。 演習② 演習①で作成したMageクラスを、インスタンスを作成するなどして 実際に使ってみよ。
© Copyright 2024 ExpyDoc