73 lines
3.6 KiB
Markdown
73 lines
3.6 KiB
Markdown
|
---
|
|||
|
title: Getters & Setters
|
|||
|
localeTitle: Getters & Setters
|
|||
|
---
|
|||
|
# Getters & Setters
|
|||
|
|
|||
|
Getters и Setters используются для эффективной защиты ваших данных, особенно при создании классов. Для каждой переменной экземпляра метод getter возвращает свое значение, в то время как метод setter устанавливает или обновляет его значение. Геттеры и сеттеры также известны как аксессоры и мутаторы, соответственно.
|
|||
|
|
|||
|
По соглашению, getters начинаются с get, за которым следует имя переменной, с первой буквой имени переменной с заглавной буквы. Стартеры начинаются с набора, за которым следует имя переменной, с первой буквой имени переменной с заглавной буквы.
|
|||
|
|
|||
|
**_Пример:_**
|
|||
|
|
|||
|
```java
|
|||
|
public class Vehicle {
|
|||
|
private String color;
|
|||
|
|
|||
|
// Getter
|
|||
|
public String getColor() {
|
|||
|
return color;
|
|||
|
}
|
|||
|
|
|||
|
// Setter
|
|||
|
public void setColor(String c) {
|
|||
|
this.color = c;
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Метод getter возвращает значение атрибута. Метод setter принимает параметр и присваивает его атрибуту.
|
|||
|
|
|||
|
Как только геттер и сеттер были определены, мы используем его в нашей основной:
|
|||
|
|
|||
|
```java
|
|||
|
public stativ void main(String[] args) {
|
|||
|
Vehicle v1 = new Vehicle();
|
|||
|
v1.setColor("Red");
|
|||
|
System.out.println(v1.getColor());
|
|||
|
}
|
|||
|
|
|||
|
// Outputs "Red"
|
|||
|
```
|
|||
|
|
|||
|
* * *
|
|||
|
|
|||
|
Getters и seters позволяют контролировать значения. Вы можете проверить данное значение в настройщике, прежде чем устанавливать значение.
|
|||
|
|
|||
|
## Почему геттер и сеттер?
|
|||
|
|
|||
|
Используя геттер и сеттер, программист может контролировать доступ и обновление важных переменных, например изменение значения переменной в заданном диапазоне. Рассмотрим следующий код метода сеттера:
|
|||
|
|
|||
|
```java
|
|||
|
public void setNumber(int num) {
|
|||
|
if (num < 10 || num > 100) {
|
|||
|
throw new IllegalArgumentException();
|
|||
|
}
|
|||
|
this.number = num;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Это гарантирует, что значение числа всегда устанавливается между 10 и 100. Если программист позволяет напрямую изменять значение переменной, вызывающий может установить для него любое произвольное значение:
|
|||
|
|
|||
|
```java
|
|||
|
obj.number = 3;
|
|||
|
```
|
|||
|
|
|||
|
Это нарушает ограничение для значений от 10 до 100 для этой переменной. Поскольку мы не ожидаем, что это произойдет, скрытие номера переменной как частного и использование setter предотвращает ее. С другой стороны, метод getter - единственный способ для внешнего мира прочитать значение переменной:
|
|||
|
|
|||
|
```java
|
|||
|
public int getNumber() {
|
|||
|
return this.number;
|
|||
|
}
|
|||
|
|
|||
|
```
|