オブジェクト指向

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クラスに引数なしのコンストラクタを明示する必要がある。