Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Геттер і Сеттер | Класи: Розширений Рівень
Java Extended

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

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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

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

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

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

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