https://www.baeldung.com/scala/lazy-val
https://stackoverflow.com/questions/7484928/what-does-a-lazy-val-do
48. Абстрактные классы Scala
49. Синглтон
50. Объекты-компаньоны
Объект с тем же именем, что и класс называется объект компаньон (companion object). И наоборот, класс является классом-компаньоном объекта. Класс или объект компаньон может получить доступ к приватным членам своего спутника. Используйте объект компаньон для методов и значений, которые не специфичны для экземпляров класса компаньона.
51. Почему в Scala не поддерживается множественное наследование?
В Scala множественное наследование реализуется с применением трэйтов (не знаю как эта концепция называется по-русски). Трэйты аналогичны абстрактному классу, но не имеют аргументов и у класса может быть несколько базовых классов-трэйтов:
trait Planar {
def height: Int
def width: Int
def surface = height * width
}
...
class Square extends Shape with Planar with Movable …
Заметки о функциональном программировании. Наследование и полиморфизм. (bavadim.me) term5-scala (cdkrot.me)