2007/05/23(水)Javaのコンストラクタ
ちょっとJavaのお話が出てきたので,個人的見解を書きつづってみる.
コンストラクタ
コンストラクタを初期化と訳すことは多いけど,実際に行っているのはそのクラスのインスタンスの“構築”.
メモリ中から必要な分だけ確保してインスタンスとし,インスタンス中のデータメンバに初期値を代入することができます.
このことから,初期化も行っているにすぎません.
(Javaのマニュアル中でも,コンストラクタ中では“構築”と表現して,“初期化”とは表現していないはずです.)
インスタンスにおける初期化はイニシャライザで行います.
public class a { { x = 1; y = 2; }; public int x, y; public a(){}; public static void main(String args[]){ a data = new a(); System.out.printf("%d %d", data.x, data.y); } }
ここにある無名のメソッドがイニシャライザになります.
また,利用するクラスによっては,構築後に初期化が必要な場合もあります.
特に,ネットワーク接続系のクラスに多いようで,接続後,相手に合わせてこちらのデータメンバを初期化し直す必要があったりします.
この場合,通常initというメソッドをオーバーライドし,初期化処理を行うことになります.
ちなみに,インスタンスが破棄されるときにはデストラクタ(ファイナライザ)が実行されます.
インスタンス
インスタンスとはオブジェクトに近い概念です.
どちらかというと,インスタンスは実体,オブジェクトは概念的な意味合いが強い気がします.
メソッド
関数の一種でインスタンスに対する操作手続き?かな.
純粋に関数といった場合,クラス中のstaticメンバなどのインスタンスに依存しないメソッドでしょうか.