1. コンストラクタの基本
- オブジェクトの初期化を行う
- newがオブジェクトを作成した後、からなず呼び出される
- クラスと同じ名前を持つ
- 戻り値型がない(voidも書かない)
- コンストラクタはオブジェクトに取り込まれない
- 定義されていない場合、デフォルトコンストラクタが暗黙のうちに作成される
- デフォルトコンストラクタは引数がない
- コンストラクタを作成するとデフォルトコンストラクタは作成されなくなる
- コンストラクタはオーバーロード(多重定義)出来る
コンストラクタはオブジェクトの中にはないということに注意する コンストラクタはメンバではない コンストラクタの実態はクラスファイルの中にある
1-1. 以下間違いやすい点
- コンストラクタと同じ名前のメソッドを作れる
- コンストラクタ名はクラス名と完全に同じでなければならない
1-2. デフォルトコンストラクタの実態
public class Egg() extends Food {
public void constructor(){
super(); //スーパーコンストラクタを呼び出す
}
}
1-3. デフォルトコンストラクタのアクセス修飾子
デフォルトコンストラクタのアクセス修飾子はクラスとおなじになる
2. thisキーワード
- thisはオブジェクト自身の参照である
- すべてのオブジェクトがthisを持つ
- this.[メンバ名]という形で使用できる
- return this;のように参照として単体でも使用できる
- コンストラクタやインスタンスメソッドなどの中で使用できる
- クラスメソッドの中で使用するとコンパイルエラーになる
2-1. thisキーワードの使い方
- フィールドとその他の変数を区別するのに使うことが出来る
- コンストラクタやメソッドで使用できる
3. コンストラクタのオーバーロード
コンストラクタを複数定義することをコンストラクタのオーバーロード(多重定義)という
- 引数の名前を変えただけではオーバーロードにならない。コンパイルエラーになる
- アクセス修飾子を変えただけではオーバーロードとならない。コンパイルエラーになる
- 引数の型、引数の個数、引数の並び順が異なるコンストラクタを複数定義できる
4. this()によるコンストラクタの呼び出し
- コンストラクタではthis()を使って他のコンストラクタを呼び出せる
- this()はコンストラクタの最初の行に書かないといけない
- this()はメソッドでは使えない
5. メソッドのオーバーロード
メソッドもコンストラクタと同様にオーバーロード出来る
- オーバーロードするには引数の構成を変えなければならない
- 戻り値型やアクセス修飾子はどのように変えても良い
- 戻り値やアクセス修飾子が違うだけではオーバーロードにならない