Это ключевые моменты из Programming in Scala, второе издание Мартина Одерски, Лекса Спуна, Билла Веннерса. Я хотел отметить некоторые ключевые моменты. Они могут показаться сломанными и не иметь особого смысла, если вы не читали книгу. Это для личного ознакомления. Не стесняйтесь исправлять меня, если я что-то неправильно интерпретировал в этом посте.

Глава 11. Иерархия Scala

В Scala каждый класс наследуется от общего суперкласса с именем Any. Методы, определенные в Any, являются «универсальными» методами и могут быть вызваны для любого объекта. В конце иерархии Scala определяет Null и Nothing и являются общими подклассами.

11.1 Иерархия классов Scala

  • Корневой класс Any имеет два подкласса: AnyVal и AnyRef. AnyVal является родительским классом для каждого встроенного класса значений в Scala.
  • Девять классов значений: Byte, Short, Char, Int, Long, Float, Double, Boolean и Unit. Пространство классов значений является плоским, и они имеют неявное преобразование (например, для преобразования Int в Long)
  • Первые восемь из них соответствуют примитивным типам Java, и их значения представлены во время выполнения как примитивные значения Java.
  • Все экземпляры этих классов написаны как литералы в Scala и определены как абстрактные и окончательные.

  • Unit примерно соответствует типу void в Java; он используется как тип результата метода, который иначе не возвращает интересного результата. Единица имеет единственное значение экземпляра, которое записывается ().
  • AnyRef — это базовый класс для всех ссылочных классов в Scala. AnyRef — это просто псевдоним для java.lang.Object.
  • Классы Scala отличаются от классов Java, поскольку они также наследуют от специальной черты маркера, называемой ScalaObject.

11.2. Как реализованы примитивы

  • Scala хранит целые числа так же, как Java: как 32-битные слова. Стандартные операции, такие как сложение или умножение, реализованы как примитивные операции.
  • Целые числа типа Int при необходимости прозрачно преобразуются в «упакованные целые числа» java.lang.Integer.
  • Методы Scala == проверяют значения, а метод eq также проверяет равенство ссылок.

11.3. Типы нижней части

  • scala.Null и scala.Nothing — это специальные типы, которые единообразно обрабатывают некоторые крайние случаи объектно-ориентированной системы типов Scala.
  • Класс Null является типом нулевой ссылки и является подклассом каждого ссылочного класса. Null несовместим с типами значений.
  • Type Nothing находится в самом низу иерархии классов Scala; это подтип любого другого типа. одно использование Nothing состоит в том, что оно сигнализирует об аварийном завершении.

Заключение

Вышеприведенная суть закладывает хорошую основу для наследования классов в Scala.

Предыдущий:



Следующий: