サイズ: 3200
コメント:
|
サイズ: 3460
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 7: | 行 7: |
Cardクラスを例として説明します。 |
Drinkクラスのメソッドを定義してみましょう。 . {{attachment:drink.png}} クラス図には次の3つの機能(メソッド)が書かれています。 . Drink(...) . disp( ) . zoryo( ) クラス名と同じメソッドはコンストラクタと呼ばれ、別の機能を持ちます。次ページで解説。 |
行 11: | 行 16: |
public class Card | public class Drink extends Item |
行 13: | 行 18: |
String suit; int rank; Card(String s, int r) |
int yoryo; void disp() |
行 18: | 行 22: |
suit = s; rank = r; } void show() { System.out.println( suit + " " + rank ); |
System.out.printf("%s \\%d %dml\n", namae, kakaku, yoryo ); |
行 29: | 行 27: |
Card a, b; | Drink ocha; |
行 31: | 行 29: |
a = new Card("ハート", 12); b = new Card("スペード", 3); a.show(); b.show(); |
ocha = new Drink(); ocha.namae = "麦茶"; ocha.kakaku = 120; ocha.yoryo = 500; ocha.disp(); |
メソッド
クラスのもつ機能を定義したものをメソッドといいます。
メソッドはオブジェクトに対する(オブジェクトを利用した)処理を記述したものとも言えます。
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()が定義されていなくても利用できるということです。
呼び出しが行われたら、スーパークラスで定義されているメソッドが使われます。
スーパークラスで定義されているメソッドと同じ名前のメソッドを サブクラスで再定義することもできます。 この場合サブクラスで定義したメソッドが優先されます。
これをメソッドのオーバーライドといいます。