Неизменяемый объект не может быть изменен после его создания — каждое поле устанавливается один раз, и нет методов, которые мутируют состояние. Чтобы его "изменить", вы создаете новый объект.
Построение неизменяемого типа
{
cents;
String currency;
{
.cents = cents;
.currency = currency;
}
Money {
(.cents + other.cents, currency);
}
{ cents; }
}
