Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Геттер і Сеттер | Section
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
Основи Об'єктно-Орієнтованого Програмування Java

bookГеттер і Сеттер

Свайпніть щоб показати меню

Найкращий спосіб обійти модифікатор доступу private

Усі програмісти на Java використовують конструкції, які називаються гетерами та сетерами.

Гетери та сетери — це методи, що дотримуються певного шаблону. Вони використовуються для обходу модифікатора доступу private та ефективної роботи з полями з іншого класу.

Призначення гетерів і сетерів

Простіше кажучи, сетер дозволяє призначити значення певному полю, захищеному модифікатором доступу private, а гетер дозволяє отримати значення з поля, захищеного модифікатором доступу private.

Синтаксис гетера та сетера:

Main.java

Main.java

copy
123456789
// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }

Як видно з коду вище, ми використовуємо іменування методів за шаблоном getFieldName() та setFieldName(). Тобто, якщо у нас є поле private String name і ми створюємо гетер та сетер з іменами getName() та setName() відповідно. Також варто зазначити, що гетер повертає значення того ж типу, що й поле name, а сетер приймає параметр того ж типу, що й поле name.

Це дозволяє отримувати доступ до полів, захищених модифікатором доступу private. Розглянемо приклад доступу до приватного поля з класу Person у класі main:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }

Як ви бачите, ми використовуємо setter для встановлення значення поля name, а потім використовуємо getter для відображення значення поля name на екрані. Зверніть увагу на синтаксис getter і setter, а також на те, що поле name у класі Person захищене модифікатором доступу private.

Конструктор проти Getter/Setter

Що краще використовувати: ініціалізацію через конструктор + перевизначення методу toString(), чи використання getter та setter?

Безумовно, краще використовувати getter та setter для доступу до полів, захищених модифікатором доступу private. Це забезпечує більшу гнучкість у коді та покращує його читабельність. Коли ви бачите використання методу getName() у коді, ви одразу розумієте, що цей метод отримує значення поля з іменем name. Те ж саме стосується і використання методу setName() — ви одразу розумієте, що присвоюєте певне значення полю для об'єкта класу, у якому він використовується. Якщо інші люди читатимуть ваш код, вони будуть раді бачити getter-и та setter-и.

Також варто зазначити, що для кожного поля потрібен окремий getter і setter. Якщо у класі є два поля, захищені модифікатором доступу private, клас повинен мати по одному getter для кожного поля, тобто два getter-и і два setter-и. Розглянемо приклад, де ми додаємо поле age до класу Person:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

Як бачите, для кожного поля класу Person створено по одному геттеру та сеттеру. У методі main поля ініціалізуються за допомогою сеттера та їх значення виводяться на екран за допомогою геттера. Використання цих методів є дуже зручним, і ви часто будете використовувати їх у майбутньому.

1. Яке призначення використання геттерів і сеттерів?

2. Який синтаксис методу-геттера в Java?

3. Який синтаксис методу setter у Java?

question mark

Яке призначення використання геттерів і сеттерів?

Select the correct answer

question mark

Який синтаксис методу-геттера в Java?

Select the correct answer

question mark

Який синтаксис методу setter у Java?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 14

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 14
some-alt