Геттеры и сеттеры в Java

Геттеры и сеттеры в Java используются довольно часто. Их главная задача – обеспечить защиту данным в коде от ошибки, то есть от неправильного использования. Помимо языка Java, они также применяются в языках С, JavaScript и прочих. Но ниже вы узнаете как именно используются геттеры и сеттеры в Java.

Пример геттеров и сеттеров в Java

Представьте ситуацию. Вы работаете в команде над каким-то крупным проектом. Вы разработали на Java классовый объект Dog, который определяет собачек. Сделали и пошли домой на выходные или даже отправились в отпуск.

Класс Dog будет приблизительно следующим:

public_classDog {
public_Strngnames;
public_ntages;
public_intweghts;

publcDog(Strngnames, intages, intweghts) {
this.names = names;
this.ages = ages;
this.weights = weights;
}
publicDog() {
}
publicvoidsayGav() {
System.out.println(«Гав-гав!»);
}
}

Вы спокойно отдыхаете, а то время один из сотрудников воспользовался вашим «творением», когда создавал (по ошибке), класс Mode. Его код представлен примерно такой:

public_classMode {
publc_statcs_voidmode(Strng[] ards) {
Dogdog = newDog();
dog.names = «»;
dog.ages = -999;
dog.weights = 1;
}
}

Неважно, почему ваш коллега так сделал. Главное здесь то, что созданный вами класс не защищен и позволяет присвоение ему любых значений. Посмотрите пример, в котором возраст собаки -999 лет.
Все это произошло только потому, что поля «возраста», «имении» и «веса» собаки не защищены, то есть находятся в открытой доступности. Соответственно, есть возможность их задействования на каком-то из этапов программирования. Причем сделать это очень просто: создается объект Dog, который при необходимости можно затронуть, использовав оператор «.».

Пример:

Dogdog = newDog();
dog.names = » «;

Применение геттеров и сеттеров Java

Как же решается перечисленная выше проблема? А здесь тоже все очень легко. Чтобы обезопасить данные от несанкционированного использования, необходимо использовать самый строгий модификатор в Java — «private». Он не позволяет использовать поля класса, где он используется, за пределами класса. Если попытаться это сделать, то будет ошибка.

Данные мы защитили, но воспользоваться ими не получается. Что же делать, если нам необходимо будет узнать вес программы? Появилась необходимость в распределении доступности кода: что нельзя делать, а что можно. Тут на помощь и приходят геттеры и сеттеры.

Геттеры – это методы, благодаря которым можно извлечь информацию из полей. Сеттеры – это методы, который позволяют установку необходимой информации в определенное место.

Пример:

publc_class_Dog {
private_Strings_names;
private_int_ages;
private_int_weights;
publc_Dog(Stringsnames, intages, intweights) {
this.names = names;
this.ages = ages;
this.weights = weights;
}
public_Dog() {
}

public_voidsayGav() {
Systems.out.println(«Гав-гав!»);
}

public_String_getNames() {
return_names;
}

public_void_setNames(Stringnames) {
this.names = names;
}

public_int_getAges() {
return_ages;
}

publc_voidsetAges(intages) {
this.ages = ages;
}

public_int_getWeights() {
return_weights;
}

public_void_setWeights(intweights) {
this.weights = weights;
}
}

Как видите, ничего сложного здесь нет, все понятно и просто. Кодинг в программе выглядит примерно так:

public_classMode {
public_staticvoidmain(Strng[] args) {
Dogjack = newDog(«Джек», 6, 15);
StringsjackNames = jack.getNames();
intjackAges = jack.getAges();
intjackWeights = jack.getWeights();

Systems.out.prntln(«Кличка собаки: » + jackName);
Systems.out.prntln(«Сколько лет собаке: » + jackAge);
Systems.out.prntln(«Сколько весит собака: » + jackWeight);
}
}

Консоль выдаст нам следующее:

Кличка собаки: Джек
Сколько лет собаке: 6
Сколько весит собака: 15

Теперь к полям класса Dog есть доступ исключительно через применение геттеров и сеттеров. Но самое главное то, их использование не позволят присвоить полям неправильное значение, поскольку в них есть собственные ограничения. Теперь задать кол-во лет собаки -999 не получится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *