インスタンスメソッド
クラスメソッドとは
OOPのメソッドは「歩く」「話す」「戦う」といった、オブジェクトの動作や振る舞いのことを指します。クラスメソッドは、クラス内に定義したメソッドのことを指します。
メソッドの例
項目 | メソッド | 備考 |
---|---|---|
歩く | walk | スピード、方向などでキャラクターを移動する |
話す | talk | 内容、相手などを指定して会話する |
鳴く | cry | キャラクターの能力、武器などから、相手に攻撃する |
インスタンスメソッドの定義
インスタンスメソッドは「修飾子」「メソッド名」「データ型」でクラス内に定義します。PHPの場合、データ型は省略できます。
クラスメソッドの定義
次にユーザの動作として、talk() を定義してみます。
インスタンスと引数
インスタンスを引数で渡す
作成したインスタンスは、メソッドの引数で渡すことができます。
talk() メソッドの実装
talk() メソッドを追加してみましょう。引数は「Characterオブジェクト」と「文字列」とします。
Character.php
talk() メソッドの実行
「character_action.php」で新しいキャラクター「warrior」を作成し、talk() メソッドに渡してみましょう。
character_action.php
結果
インスタンスの参照
インスタンスはメモリーに保持
作成したインスタンスは、PHPのメモリーに状態を保持されます。
attack() メソッドの実装
attack() メソッドを実装し、引数で渡された Characterオブジェクトの「hp」を計算します。ここでは、damage変数の値だけ引き算しました。
Character.php
App.java
結果
「warrior」オブジェクトの「hp」の数値が変化しました。
演習
つぎのプログラムがあります。
Animal.java
animal_action.php
問題1
walk() のことを何といいますか?
1)static変数
2)staticメソッド
3)インスタンス変数
4)インスタンスメソッド
問題2
「AnimalApp.java」を実行した結果はどれですか?
1)わん! ポチが歩いた にゃー!
2)わん! ポチが歩いた にゃー! ミケが逃げた
3)わん! ポチが歩いた ミケが逃げた
4)わん! にゃー! ミケが逃げた