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