サイズ: 1130
コメント:
|
サイズ: 3200
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 9: | 行 9: |
{{{#!java public class Card { String suit; int rank; Card(String s, int r) { suit = s; rank = r; } |
---- {{{#!java public class Card { String suit; int rank; Card(String s, int r) { suit = s; rank = r; } void show() { System.out.println( suit + " " + rank ); } public static void main(String[] args) { Card a, b; a = new Card("ハート", 12); b = new Card("スペード", 3); a.show(); b.show(); } } }}} |
行 21: | 行 39: |
public static void main(String[] args) { Card a, b; a = new Card("ハート", 12); b = new Card("スペード", 3); } } }}} |
このクラスのメソッドとして show が定義されています。 使い方は {{{#!java a.show(); }}} のように、インスタンスとメソッド名をピリオドでつなぎ括弧を書きます。 |
行 31: | 行 46: |
{{{#!java void show() { System.out.println( suit + " " + rank ); } void add1() { rank = rank + 1; } boolean efuda() { return (rank > 10); } int sa(Card c) { return (rank - c.rank); } public static void main(String[] args) { Card a, b; a = new Card("ハート", 12); b = new Card("スペード", 3); a.add1(); a.show(); if (a.efuda()) System.out.println( "絵札" ); b.show(); if (b.efuda()) System.out.println( "絵札" ); System.out.println( "差は" + a.sa(b) ); } } }}} |
void(値を返さない)型のメソッドの場合 インスタンスxxxに対してメソッドyyy()を行う のように解釈すればよい。 この場合は「インスタンスaに対してshow()を行う」と読めます。 メソッドshow()の中ではprintlnが行われています。 ここで参照されているsuitとrankは、呼び出しで指定されたインスタンスaの変数が使われます。 ---- {{{#!java void add1() { rank = rank + 1; } public static void main(String[] args) { Card a; a = new Card("ハート", 12); a.add1(); a.show(); } }}} メッソドadd1はrankの値を1増やします。 この例では、aの値は「ハートの13」になります。 ---- 値を返すメソッドを記述することもできます。 {{{#!java boolean efuda() { return (rank > 10); } public static void main(String[] args) { Card a; a = new Card("ハート", 12); if (a.efuda()) System.out.println( "aは絵札" ); } }}} ---- 引数をもつメソッドの例です。 {{{#!java int sa(Card c) { return (rank - c.rank); } public static void main(String[] args) { Card a, b; a = new Card("ハート", 12); b = new Card("スペード", 3); System.out.println( "差は" + a.sa(b) ); } } }}} ---- === 機能の継承 === 機能(メソッド)も性質と同様に継承されます。 スーパークラスで定義されたメソッドはサブクラスでも利用できます。 {{{#!java public class クラス1 { void method1() ... } }}} クラス1でメソッドmethod1()が定義されている時には、 そのサブクラスでmethod1()が定義されていなくても利用できるということです。 呼び出しが行われたら、スーパークラスで定義されているメソッドが使われます。 スーパークラスで定義されているメソッドと同じ名前のメソッドを サブクラスで再定義することもできます。 この場合サブクラスで定義したメソッドが優先されます。 これをメソッドのオーバーライドといいます。 |
メソッド
クラスのもつ機能を定義したものをメソッドといいます。
メソッドはオブジェクトに対する(オブジェクトを利用した)処理を記述したものとも言えます。
Cardクラスを例として説明します。
1 public class Card 2 { 3 String suit; 4 int rank; 5 6 Card(String s, int r) 7 { 8 suit = s; 9 rank = r; 10 } 11 12 void show() 13 { 14 System.out.println( suit + " " + rank ); 15 } 16 17 public static void main(String[] args) 18 { 19 Card a, b; 20 21 a = new Card("ハート", 12); 22 b = new Card("スペード", 3); 23 a.show(); 24 b.show(); 25 } 26 }
このクラスのメソッドとして show が定義されています。 使い方は
1 a.show();
のように、インスタンスとメソッド名をピリオドでつなぎ括弧を書きます。
void(値を返さない)型のメソッドの場合
- インスタンスxxxに対してメソッドyyy()を行う
のように解釈すればよい。
この場合は「インスタンスaに対してshow()を行う」と読めます。
メソッドshow()の中ではprintlnが行われています。
ここで参照されているsuitとrankは、呼び出しで指定されたインスタンスaの変数が使われます。
メッソドadd1はrankの値を1増やします。
この例では、aの値は「ハートの13」になります。
値を返すメソッドを記述することもできます。
引数をもつメソッドの例です。
機能の継承
機能(メソッド)も性質と同様に継承されます。
スーパークラスで定義されたメソッドはサブクラスでも利用できます。
クラス1でメソッドmethod1()が定義されている時には、 そのサブクラスでmethod1()が定義されていなくても利用できるということです。
呼び出しが行われたら、スーパークラスで定義されているメソッドが使われます。
スーパークラスで定義されているメソッドと同じ名前のメソッドを サブクラスで再定義することもできます。 この場合サブクラスで定義したメソッドが優先されます。
これをメソッドのオーバーライドといいます。