第2章 クラスの仕組み (Java)
コンストラクタ
new演算子で作成した直後のオブジェクトのフィールドには、0やnullなどの規定値が入っている。
コンストラクタを作成すると、オブジェクト作成時に特定の値をフィールドにセットすることができる。
(new演算子がオブジェクトを作成した直後、コンストラクタが起動してオブジェクトに具体的な初期値をセットできる)
コンストラクタの書き方
public クラス名 (引数1, 引数 2, ・・・・){
——–色々な処理———-
}
- コンストラクタの名前はクラス名(型名)と同じ
- 戻り値型は書かない(voidも書かない)
- public は省略可能
- return以外なら任意の文を書いてよい
- コンストラクタはnew文とセットで使用する。
コンストラクタをオーバーロードする
自前のコンストラクタ(引数あり)を作成するとデフォルトコンストラクタは作成できなくなる。
コンストラクタのオーバーロード
コンストラクタはフィールに初期値を設定するのが役目なので、他のコンストラクタを区別できれば複数作成が可能
区別できるとは?
- 引数の数が違う
- 引数の並び順が違う
- 引数の型が違う
インスタンスメソッドとは
- オブジェクトの中にあり、オブジェクトの中で機能する
(staticが付くとクラスメソッド) - 使用するにはメンバ参照演算子で指定する。(「.」ドット)
インスタンスメソッドとフィールドの関係
- インスタンスメソッドはフィールド変数を利用できる
- フィールド変数に何かの値が設定されていることを前提にプログラムを書く
static と静的メンバ
クラスメソッドとインスタンスメソッドの違いは、メソッドにstaticキーワードをつけるか否かである。
staticが付いたものはオブジェクトに含まれない。
staticが付くとオブジェクトの定義項目でなく、クラスに付属する実体のあるメンバである。
(けっして、オブジェクトに取り込まれず、クラスの中に実体がある)
staticのついたメンバは、変数をクラス変数、メソッドは、クラスメソッドと呼ぶ
また、2つを総称して静的メンバまたは、クラスメンバという。
参照と参照型
new 演算子はオブジェクトを作成しピープというメモリ領域に置く
そして、new 演算子は、参照と呼ばれる特殊な値を返す。
参照の仕組み
- クラス型、配列型、インターフェース型を総称して参照型をいう。
- 参照型の変数にはオブジェクトではなく参照が入っている。
- 参照を使うといつでもオブジェクトにアクセスできる。
- 初期化されていない参照変数は使えない。
初期化されていない変数に対して、メンバ参照演算子でフィールドやメソッドを参照するとコンパイルエラーになる。 - nullは「有効でない参照」
nullは参照の一種であるから参照変数に代入すると、その変数は初期化されているとみなされるのメンバ参照演算子で参照してもコンパイルエラーにはならないが、実在するオブジェクトを参照できずに実行時エラーが発生する。 - 参照変数同士の代入は、参照のコピーになる。
(オブジェクトのコピーにはならないので注意!)