コンストラクタとデストラクタ
C++ 2013/08/25
コンストラクタは、クラス名と同じ名前のメソッドとして定義する。デストラクタは、クラス名の頭に ~
を付け加えた名前のメソッドとして定義する。コンストラクタもデストラクタも、返り値型は書かず返り値がない。void
でもない。デストラクタは引数を持てない。コンストラクタは引数を持てる。引数のないコンストラクタをデフォルトコンストラクタと言う。
Java 2013/08/25
コンストラクタは、クラス名と同じ名前のメソッドとして定義する。
デストラクタはJavaには存在しない。finalize()
というメソッドがファイナライザと呼ばれるが、これはいつ呼び出されるか制御できず、デストラクタとは言わない。
コンストラクタは、返り値型は書かず返り値がない。void
でもない。
Scala 2014/10/27
クラス名の後にコンストラクタの引数(クラスパラメータ)を書いて、処理内容をクラス定義の中に直接書く。
クラスの中に複数のコンストラクタを定義したい場合は、そのうち1つを基本コンストラクタ(primary constructor)といい、上述のように定義して、それ以外のコンストラクタを補助コンストラクタ(auxiliary constructor)といい、this
という名前のメソッドで定義する。
this
というメソッドの実装の中で他のコンストラクタを呼び出さないといけない。
trait
ではコンストラクタのパラメータを持つことができず、また基本コンストラクタのみで、補助コンストラクタを定義できない。
Javaと同じく、デストラクタは存在しない。
Ruby 2015/03/01
initialize
というメソッドがインスタンス初期化のためにnew
メソッドから呼び出されるので、初期化時のコードを書くには、initialize
メソッドをオーバーライドする。クラスメソッドであるnew
メソッドをオーバーライドすることは推奨されていない。
new
メソッド呼び出し時の引数がそのままinitialize
メソッドに渡される。
initialize
というメソッドは特に指定をしなくても自動で private
になる。