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