演算子を使用してクラスをインスタンス化すると、クラスnewの新しいインスタンスが取得されます。新しいインスタンスはオブジェクトです。
objectキーワードを使用してシングルトン オブジェクトを宣言できます。コンパイル時にインスタンス化されると言っても、実際には何の意味もありません。オブジェクトは、プログラムの実行中のみ存在し、それ以前 (プログラムのコンパイル時など) には存在しません。Anobjectは、最初に使用されるときにインスタンス化されます。
4 は Int のケース クラスですか? 5.07 は Double のケース クラスですか?
No. 4 と 5.07 は、クラスIntとの単なるインスタンスですDouble。Scala ではオブジェクトと同じように動作しますが、4 と 5.07 は実際にはオブジェクトではありません。これを理解するには、標準の Scala クラス階層について知っておく必要があります。
階層の最上位は typeAnyです。すべてが伸びAnyます。Anyには、 と の 2 つの直接サブタイプがAnyValありAnyRefます。
AnyValすべての値型のスーパータイプです。値の型は、JVM プリミティブ型にマップされる型です (例: Int-> int、Double->doubleなど)。
AnyRefすべての参照型 (「通常の」オブジェクト) のスーパータイプです。
実行時に、拡張AnyRefするものはすべて舞台裏のオブジェクトであり、拡張するものはすべてAnyVal実際にはオブジェクトではありません。プリミティブ型にマップされます。
ケースクラスは、一種の構文糖衣です。ケース クラスは通常のクラスとまったく同じですが、コンパイラがいくつかのメソッドを自動的に追加する点が異なります (たとえば、パターン マッチングに適したものになります)。