オブジェクト指向
1.17-18
クラスとオブジェクト
オブジェクト(object)・・「モノ」のこと
目に見えるモノでだけではなく、概念などもオブジェクトである。オブジェクトの中には、クラスとインスタンスが含まれる。オブジェクト
- クラス
- インスタンス
クラス(class)・・「分類」「型」「概念」
- インスタンス(instance)・・クラスを実体化したもの
インスタンスを生成するためには new を用いる
Dog john = new Dog();
自分で定義したDogという参照型の変数の型を用いてjohnという名前の変数にインスタンスを格納している。これは、インスタンスがDogにいるという存在の場所を知らせているだけで、そのまま変数に代入している訳ではないことに注意
またクラスは三つで構成されている。
- フィールド(状態)
- メソッド(振る舞い)
- コンストラクタ(フィールドの初期化)
コンストラクタの方法
public class Dog{ String name; Dog(String name){ this.name = name; } }
コンストラクタするときに陥りやすいところ
コンストラクタは、明示的に表示していないときでも、引数なしのコンストラクタが暗黙のうちに生成されている。(デフォルトコンストラクトという)
しかし、引数ありのコンストラクタを生成した場合、引数なしのコンストラクタは生成されない。
そのため、java Dog john = new Dog();
に引数を入れなかった場合、コンパイルエラーが生じる。
なぜなら、引数ありのコンストラクタを生成しているにも関わらず、引数を与えていないからである。この場合、Dogクラスに引数なしのコンストラクタを明示する必要がある。