Scala/Класи і об'єкти
< Scala
(Перенаправлено з 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, що дозваляє робити копії об'єкту із змінами чи без них