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