Поля (атрибуты)
Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy — урок 6 из 87.
Поля (атрибуты) — это переменные, которые хранят данные внутри класса. Обычно они являются private и доступ к ним осуществляется через методы геттеры и сеттеры.
Объявление полей
public class Person {
private String name;
private int age;
}Добавление геттеров и сеттеров
public class Person {
private String name;
private int age;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
}Использование класса
Person person = new Person();
person.setName("Alice");
person.setAge(25);
System.out.println(person.getName()); // AliceОбъявление полей private называется инкапсуляцией. Это защищает данные, контролируя доступ через методы, что позволяет добавлять валидацию в сеттеры.
Задание
СреднеСоздайте класс BankAccount с приватными полями и методами-геттерами:
- Приватные поля:
accountName(String) иbalance(double) - Конструктор для установки обоих полей
- Методы-геттеры для каждого поля
- Метод
deposit()для внесения денег - Метод
withdraw(), который возвращает "Success" или "Insufficient funds"
Шпаргалка
Поля (атрибуты) — это переменные, которые хранят данные внутри класса. Обычно они помечаются модификатором private, а доступ к ним осуществляется через методы геттеры (getter) и сеттеры (setter).
Объявление приватных полей:
public class Person {
private String name;
private int age;
}Добавление геттеров и сеттеров:
public class Person {
private String name;
private int age;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
}Использование класса:
Person person = new Person();
person.setName("Alice");
person.setAge(25);
System.out.println(person.getName()); // AliceОграничение доступа к полям с помощью private называется инкапсуляцией. Это защищает данные, контролируя доступ через методы, что позволяет добавлять проверку данных (валидацию) в сеттерах.
Попробуйте сами
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
double initial = Double.parseDouble(scanner.nextLine());
double deposit = Double.parseDouble(scanner.nextLine());
BankAccount account = new BankAccount(name, initial);
System.out.println("Account: " + account.getAccountName());
System.out.println("Balance: " + account.getBalance());
account.deposit(deposit);
System.out.println("After deposit: " + account.getBalance());
String result = account.withdraw(2000);
System.out.println("Withdraw 2000: " + result);
System.out.println("Final Balance: " + account.getBalance());
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово thisМетодыПоля (атрибуты)Метод-конструкторПерегрузка конструкторовИтоги — Простой калькулятор4Наследование
Основы наследования (extends)Ключевое слово superПереопределение методов (@Override)Цепочка конструкторовКласс ObjectОдиночное и многоуровневое наследованиеПочему нет множественного наследования классовИтоги — Иерархия сотрудников7Специальные методы и класс Object
Метод toString()equals() и hashCode()Метод clone()compareTo() и ComparableИнтерфейс ComparatorПовторение — Кастомная сортировка2Модификаторы доступа и инкапсуляция
Обзор уровней доступаМетоды геттеры и сеттерыСокрытие данныхКлючевое слово finalИтоги — Менеджер банковского счета5Полиморфизм
Основы перегрузки методовПереопределение методов (Run-Time)Upcasting и DowncastingОператор instanceofАбстрактные классы и методыИтоги: Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияАгрегация против композицииВнутренние, вложенные и анонимные классыEnums и методы перечисленийRecords (Java 16+)Sealed-классы (Java 17+)11Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн BuilderПаттерн ObserverПаттерн Strategy3Свойства класса и статические члены
Переменные экземпляра и статические переменныеСтатические методыСтатические блокиКонстанты (static final)Итоги: Счетчик и утилиты6Интерфейсы и абстрактные классы
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовDefault и Static методы в интерфейсахАбстрактные классы vs ИнтерфейсыФункциональные интерфейсыИтоги — Платежная система9Обобщения
Введение в обобщенияОбобщенные классыОбобщенные методыОграниченные параметры типаСимволы подстановки (Wildcards: ?, extends, super)Итоги — Обобщенный контейнер12Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»Паттерн «Итератор»