Я из фона OOP
и хочу очистить свое представление о Object
, Classes
, Trait
, Sealed Trait
и Case Classes
в Scala
, я пишу ниже, что я понимаю о это до сих пор:
Мы создаем Object
, когда хотим закодировать некоторые функции утилиты внутри него, и мы можем получить к нему доступ напрямую, без использования "нового" ключевого слова, такого как "статические" классы в Java.
Мы создаем Classes
, когда мы кодируем для глагола, означает объект и его поведение, инкапсулированное так же, как мы кодируем для классов в Java, и мы создаем его с помощью нового слова.
Мы создаем Trait
, когда хотим кодировать те же, что и абстрактные классы в Java
.
Мы создаем Sealed Trait
, когда хотим добиться функциональности как одного и того же Enum в Java.
Мы создаем Case Classes
, когда можем ожидать, что этот класс можно использовать для сопоставления шаблонов в будущем, аналогично instanceOf в Java.
Насколько я понимаю все это?