Свойства

Рассмотрим доступ к переменным объектов с помощью геттеров и сеттеров. Примером плохого написания кода считается, использование для переменных класса модификатора доступа public. Это нарушает принцип инкапсуляции. Поэтому для защиты был придуман механизм доступа к переменным через get и set (геттер и сеттер) методы, которые обычно называют свойства.

Get позволяет получить значения (читать значения), а Set — записать значения в переменную. В коде они не отличаются от обычных методов. Но имя метода всегда начинается с префикса get или set.

Объявим все переменные с модификатором доступа private. Теперь все переменные доступны только внутри класса.

Class MyClass {
    private String name = "Vadim";
    private int age = 33;
}

Теперь организуем доступ через геттеры и сеттеры. Для них мы используем модификатор доступа public, затем идет тип переменной (для каждой свой, такой же, как и у переменных, которые мы закрыли), затем имя метода (префикс get/set и само имя переменной). В фигурных скобках пишем return имя_переменной; для возврата значения переменной (чтения).

Class MyClass {
    private String name = "Vadim";
    private int age = 33;

    public String getName() {
        return name;
    }

    public int getAge(){
        return age;
    }
}

Теперь у нас есть доступ к чтению переменных. Давайте настроим доступ к их записи через set.

Class MyClass {
    private String name = "Vadim";
    private int age = 33;

    public String getName() {
        return name;
    }

    public int getAge(){
        return age;
    }

    public void setName(String newName) {
        name = newName;
    }

    public void setAge(int newAge) {
        age = newAge;
    }
}

Вопрос 1

Как вам кажется, в чём преимущество при использовании свойств?

Вопрос 2

Можем ли мы в сеттер не передавать параметры?

Last updated