# Свойства

Рассмотрим доступ к переменным объектов с помощью геттеров и сеттеров. Примером плохого написания кода считается, использование для переменных класса модификатора доступа 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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://comaqa.gitbook.io/java-automation/oop-v-java/svoistva.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
