メソッド
クラスのもつ機能を定義したものをメソッドといいます。
メソッドはオブジェクトに対する(オブジェクトを利用した)処理を記述したものとも言えます。
Drinkクラスのメソッドを定義してみましょう。
クラス図には次の3つの機能(メソッド)が書かれています。
- Drink(...)
- disp( )
- zoryo( )
クラス名と同じメソッドはコンストラクタと呼ばれ、別の機能を持ちます。次ページで解説。
1 public class Drink extends Item 2 { 3 int yoryo; 4 5 void disp() 6 { 7 System.out.printf("%s \\%d %dml\n", namae, kakaku, yoryo ); 8 } 9 10 public static void main(String[] args) 11 { 12 Drink ocha; 13 14 ocha = new Drink(); 15 ocha.namae = "麦茶"; 16 ocha.kakaku = 120; 17 ocha.yoryo = 500; 18 ocha.disp(); 19 } 20 }
このクラスのメソッドとして show が定義されています。 使い方は
1 a.show();
のように、インスタンスとメソッド名をピリオドでつなぎ括弧を書きます。
void(値を返さない)型のメソッドの場合
- インスタンスxxxに対してメソッドyyy()を行う
のように解釈すればよい。
この場合は「インスタンスaに対してshow()を行う」と読めます。
メソッドshow()の中ではprintlnが行われています。
ここで参照されているsuitとrankは、呼び出しで指定されたインスタンスaの変数が使われます。
メッソドadd1はrankの値を1増やします。
この例では、aの値は「ハートの13」になります。
値を返すメソッドを記述することもできます。
引数をもつメソッドの例です。
機能の継承
機能(メソッド)も性質と同様に継承されます。
スーパークラスで定義されたメソッドはサブクラスでも利用できます。
クラス1でメソッドmethod1()が定義されている時には、 そのサブクラスでmethod1()が定義されていなくても利用できるということです。
呼び出しが行われたら、スーパークラスで定義されているメソッドが使われます。
スーパークラスで定義されているメソッドと同じ名前のメソッドを サブクラスで再定義することもできます。 この場合サブクラスで定義したメソッドが優先されます。
これをメソッドのオーバーライドといいます。