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; 
 | 
						||
 } 
 | 
						||
 | 
						||
``` |