Scala/Класи і об'єкти

Матеріал з Вікіпідручника

Оголошення класу в Scala

class Rectangle(val width: Int, val height: Int)

Екземпляри класу (об'єкти) створюються так

val rectangle = new Rectangle(10, 20)

Визначення класу може містити поля (fields) і методи, які разом називають членами (members) класу. Поля - це змінні, що знаходяться в екземплярі класу.

Метод — це функція, що прив'язана до класу, у інших мовах вживають також термін функція-член (member-function).

class Rectangle(val width: Int, val height: Int) {
  def square = width*height
}


Видимість класів і їх членів визначається рівнями доступу.

На відміну від таких мов як C++ і Java, Scala не має «статичних» членів, натомість підтримуються об'єкти-одинаки (Singleton objects). Одинак визначається так само як і клас, лише замість ключового слова class вживається object і одинак не може мати параметрів

object ObjectName {
// тут визначення одинака
}


Case classes[ред.]

case class CaseClassName {
// тут визначення класу
}

Case classes

  • параметри класу автоматично отримують модифікатор val, тобто стають полями класу (незмінюваними)
  • генерується фабричний метод що має таку саму назву як назва класу
  • генеруються методи toString, hashCode, і equals, що обробляють всі поля класу
  • генерується метод copy, що дозваляє робити копії об'єкту із змінами чи без них