Sobes.tech
Junior — Middle

Açıq xüsusiyyətə malikdirsə, sinif immutability-ya malikdirmi?

sobes.tech Süni İntellekt

AI-dan cavab

Если у класса есть открытое (public) свойство, то он не считается иммутабельным, потому что внешние объекты могут напрямую изменить значение этого свойства после создания объекта.

Иммутабельность означает, что состояние объекта нельзя изменить после его создания. Для этого все свойства обычно делают приватными или защищёнными, а изменения возможны только через методы, которые возвращают новый объект с изменённым состоянием.

Пример иммутабельного класса в PHP:

class ImmutableUser {
    private string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }

    public function getName(): string {
        return $this->name;
    }

    public function withName(string $name): self {
        return new self($name);
    }
}

Здесь свойство $name закрыто, и изменить его можно только создав новый объект через метод withName.