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

Зміст курсу

Java Extended

Java Extended

1. Глибока Структура Java
2. Методи
3. Рядки: Розширений Рівень
4. Класи
5. Класи: Розширений Рівень

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

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

course content

Зміст курсу

Java Extended

Java Extended

1. Глибока Структура Java
2. Методи
3. Рядки: Розширений Рівень
4. Класи
5. Класи: Розширений Рівень

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