サイズ: 2989
コメント:
|
サイズ: 3481
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 8: | 行 8: |
public class Card | public class Item |
行 10: | 行 10: |
String suit; int rank; |
String name; int price; |
行 15: | 行 15: |
Card a; a = new Card(); a.suit = "ハート"; a.rank = 12; |
Item a; a = new Item(); a.name = "おにぎり"; a.price = 120; |
行 23: | 行 23: |
この例では new Crad() が行われるとインスタンス(そのクラスのオブジェクト)が作られ、 a.suit、a.rankによって、そのインスタンスの属性にアクセスすることができました。 |
この例では new Item() が行われるとインスタンス(そのクラスのオブジェクト)が作られ、 a.name、a.priceによって、そのインスタンスの属性(変数)にアクセスすることができました。 |
行 26: | 行 26: |
インスタンスを生成するときに使われる Card() のことをコンストラクタと言います。 | インスタンスを生成するときに使われる Item() のことをコンストラクタと言います。 |
行 31: | 行 31: |
---- | |
行 42: | 行 42: |
public class Card | public class Item |
行 44: | 行 44: |
String suit; int rank; |
... |
行 47: | 行 46: |
Card() | Item() |
行 49: | 行 48: |
System.out.println("Cardインスタンスを作成しました"); | System.out.println("Itemインスタンスを作成しました"); |
行 54: | 行 53: |
Card a; a = new Card(); a.suit = "ハート"; a.rank = 12; |
Item a; a = new Item(); ... |
行 62: | 行 60: |
この例では new Card() が呼び出されるとインスタンスが作成され、 「Cardインスタンスを作成しました」と表示されます。 |
この例では new Item() が呼び出されるとインスタンスが作成され、 「Itemインスタンスを作成しました」と表示されます。 |
行 72: | 行 70: |
public class Card | public class Item |
行 74: | 行 72: |
String suit; int rank; |
... Item() { System.out.println("Itemインスタンスを作成しました"); } |
行 77: | 行 80: |
Card(String s, int r) | Item(String name, int price) |
行 79: | 行 82: |
suit = s; rank = r; |
this.name = name; this.price = price; |
行 85: | 行 88: |
Card a; a = new Card("ハート", 12); |
Item a; a = new Item("ガム", 150); |
行 95: | 行 98: |
コンストラクタ内で使われている suit, rank の2つの名前は、 今作成したインスタンスの中の変数のことです。 |
|
行 103: | 行 104: |
1. スーパークラスのコンストラクタの処理 | 1. スーパークラスのコンストラクタで記述された処理 |
行 105: | 行 106: |
の順に行われます。 (詳しくは次回) |
の順に両方が行われます。 |
行 108: | 行 108: |
=== コンストラクタを記述するときの注意 === 引数の個数が異なれば、いくつでもコンストラクタを記述することができました。 * 引数のあるコンストラクタを記述するときは、引数のないコンストラクタも記述するようにしましょう。 記述していなくても使うことがなければ問題ありませんが、 後日そのクラスのサブクラスを作成することがあれば、 気づかないうちに引数のないコンストラクタが使われるかもしれません。 |
コンストラクタ
属性(の集まり)がインスタンスの型紙として使われました。
属性の宣言は変数の宣言と同じ書き方をしますが、ここに変数が取られるわけではありません。
この例では new Item() が行われるとインスタンス(そのクラスのオブジェクト)が作られ、 a.name、a.priceによって、そのインスタンスの属性(変数)にアクセスすることができました。
インスタンスを生成するときに使われる Item() のことをコンストラクタと言います。
- コンストラクタはクラスと同じ名前です。
- コンストラクタを呼び出すときは前に new をつけます。
- コンストラクタが呼び出されるとインスタンスが作成されます。
コンストラクタの定義
コンストラクタは定義しなくてもかまいません。
インスタンス作成時になんらかの処理をしたいときには、 コンストラクタを定義して記述します。
- コンストラクタには戻り値を指定できません。
この例では new Item() が呼び出されるとインスタンスが作成され、 「Itemインスタンスを作成しました」と表示されます。
オーバーロード
引数をとるコンストラクタを定義することもできます。
引数の型や引数の個数が異なればいくつコンストラクタを定義してもよい。
インスタンスを作成すると同時に、インスタンス変数に値を代入するコンストラクタの例です。
値はコンストラクタの引数として与えています。
コンストラクタの継承
コンストラクタは継承されません。
サブクラスのコンストラクタが呼ばれたときは
- スーパークラスのコンストラクタで記述された処理
- サブクラスで記述された処理
の順に両方が行われます。
コンストラクタを記述するときの注意
引数の個数が異なれば、いくつでもコンストラクタを記述することができました。
- 引数のあるコンストラクタを記述するときは、引数のないコンストラクタも記述するようにしましょう。
記述していなくても使うことがなければ問題ありませんが、 後日そのクラスのサブクラスを作成することがあれば、 気づかないうちに引数のないコンストラクタが使われるかもしれません。