Метод-конструктор
Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy — урок 7 из 87.
Конструктор — это специальный метод, который запускается автоматически при создании объекта с помощью new. Он имеет то же имя, что и класс, и не имеет возвращаемого типа.
Базовый конструктор
public class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}Конструктор по умолчанию (без параметров)
public class Book {
private String title;
public Book() {
this.title = "Unknown";
}
}Конструктор инициализирует состояние объекта
Book book = new Book("1984", "Orwell");
// Конструктор запускается немедленно, поля установленыЕсли вы не напишете конструктор, Java предоставит пустой конструктор по умолчанию. Как только вы напишете любой конструктор, конструктор по умолчанию больше не будет предоставляться автоматически.
Задание
СреднеСоздайте класс Book с конструктором, который инициализирует все поля:
- Приватные поля:
title,author(String),pages(int) - Конструктор, который принимает все три значения и присваивает их с помощью
this - Методы-геттеры для каждого поля
- Метод
getSummary(), возвращающий"<title> by <author> (<pages> pages)"
Шпаргалка
Конструктор — это специальный метод, который запускается автоматически при создании объекта с помощью new. Он имеет то же имя, что и класс, и не имеет типа возвращаемого значения.
Базовый конструктор:
public class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}Конструктор по умолчанию (без параметров):
public class Book {
private String title;
public Book() {
this.title = "Unknown";
}
}Использование конструктора для создания объекта:
Book book = new Book("1984", "Orwell");
// Конструктор запускается немедленно, поля устанавливаютсяЕсли вы не напишете конструктор, Java предоставит пустой конструктор по умолчанию. Как только вы напишете любой конструктор, конструктор по умолчанию больше не будет предоставляться автоматически.
Попробуйте сами
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String title = scanner.nextLine();
String author = scanner.nextLine();
int pages = Integer.parseInt(scanner.nextLine());
Book book = new Book(title, author, pages);
System.out.println("Title: " + book.getTitle());
System.out.println("Author: " + book.getAuthor());
System.out.println("Pages: " + book.getPages());
System.out.println(book.getSummary());
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
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
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»Паттерн «Итератор»