あまりJavaとの違いが大きくないので、気になったところだけ。
- overrideする場合は、defの前に「override」をつける。C#みたい。
- メソッド呼び出しに「( )」は不要。属性/操作への透過的なアクセスは、OOSCで述べられているOO言語の要件に合致する。
- Javaのインタフェースに相当するものはない。同じ事がやりたければ、abstract classかtraitを使う。
- abstract classはほぼJavaと同じで、Objectを作ることもできない。
- traitはMix-in用の構成物。
- 抽象クラスを継承し、メソッド定義に実装を与える場合にはoverrideは必要ない。
- 組み込みSingletonサポートとして、objectが存在する。classのかわりにobjectで定義されたものは、Singletonとなる。
- objectは、newでインスタンス化できず、コンストラクタも存在しない。最初にメンバーにアクセスされた時に自動的にインスタンス化される。
- Scalaではprimitive型もオブジェクトだが、内部的にはJavaのAuto-Boxingを使って処理されている。つまり、必要に応じてprimitive型も使われている。
コメント