コンパニオンオブジェクト
そのオブジェクトを指して「そのクラスのコンパニオンオブジェクトである」と言う
使用用途
DIが入ってくると使わなくなってくる
暗黙のパラメータのデフォルトのインスタンスを格納するのに使われる
こっちの方がだいじ。
scalaの言語仕様
implicitの探索ルールで、コンパニオンクラスとコンパニオンオブジエクトを見に行く
インスタンスをnewで作るのではなくて
メソッドを呼ぶことで必要なインスタンスを得ることができるようになる
そのインスタンスが常に同じものなのか、どうかというのは意識しなくて良くなる
javaとかで共通する
クラス型
インスタンスはその値
オブジェクトはインスタンスのこと。オブジェクトと言った時、クラスのことを刺すのかインスタンスのことを刺すのかフワッと。javaの場合はオブジェクト型(オブジェクトクラス)は存在する(全てのクラスのルート)。
一般用語としてクラスとオブジェクトの両方をさす。もしくはあらゆるクラスのオブジェクト型
シングルトンオブジェクトという時のオブジェクトはインスタンスのこと。1つしか存在し得ないインスタンス。実行環境に1つのため、起動した時別の値になるかも。
javaにはstaticというscalaにないものがある。
Scala
シングルトンオブジェクトを簡単に作るのが「object」というキーワード。
コンパニオンクラスはクラスとそのオブジエクト。
javaのクラス=scalaのコンパニオンクラス・コンパニオンオブジェクト
プリミティブ
DIが入ってくるとあまり使わなくなってくる
メモ2020/4/3
javaにはstaticがあるが、scalaにはstaticがない
int one=1 javaにはprimitive型というのがあり、これはオブジェクトではない
scalaは全てがオブジェクトなのでオブジェクト型言語
objectはclassのようにメソッドを定義したりできる。
どのオブジェクトにも属さないメソッドを作りたいことがある。
そんな時にコンパニオンオブジェクトは便利。
いちいちインスタンスを作るのが不便な時。
mathはコンパニオンオブジェクトのメソッドとして定義されている
パッケージ名.オブジェクト名の後にドルマークがある場合はコンパニオンオブジェクト、シングルトンオブジェクトである。