Параметризованный конструктор

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

Конструктор — это специальный блок кода, который запускается при создании объекта. Параметризованный конструктор позволяет сразу при создании объекта задать его начальные характеристики (поля).

Вместо того чтобы создавать объект, а потом по очереди заполнять его поля, мы передаем значения прямо в круглых скобках: new Car("Red", 2023);. Внутри класса конструктор принимает эти аргументы и присваивает их полям, часто используя ключевое слово this для устранения конфликта имен.

Здесь вы найдете практические задачи на создание и использование конструкторов с параметрами. Это ключевой навык для быстрой и надежной инициализации объектов в Java.

Список тем

1. Объявление конструктора

id: 40478_constructor_signature_replace

В этом задании вы работаете с классом Book, который имеет поля title (название) и author (автор). В коде пропущены объявления параметров в конструкторе. Ваша задача — вписать типы и имена переменных в скобки конструктора, чтобы он корректно инициализировал поля объекта при создании экземпляра класса. Обратите внимание на тело конструктора, где параметры используются для присваивания значений полям через ключевое слово this. Это упражнение направлено на понимание синтаксиса объявления параметризованных конструкторов в Java и связи параметров с полями класса.

Заполните пропуски
public class Book {
    private String title;
    private String author;

    public Book(input1S, input2S) {
        this.title = title;
        this.author = author;
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Конструктор и вызов

id: 40478_match_instantiation_to_class

В левой колонке приведены примеры создания объектов класса Person с помощью оператора new и различных конструкторов. В правой колонке представлены объявления конструкторов с разными сигнатурами. Сопоставьте каждый вызов конструктора (создание объекта) с подходящим объявлением конструктора. Обратите внимание на количество и типы передаваемых аргументов.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
new Person();
new Person("Анна");
new Person(25);
new Person("Иван", 30);
new Person(30, "Иван");
Person()
Person(String name, int age)
Person(int age)
Person(int age, String name)
Person(String name)
Сообщения
Проверить
Показать подсказку

3. Использование this

id: 40478_this_keyword_usage_select

В данном задании вам предстоит заполнить пропуски в коде Java, чтобы корректно инициализировать поля класса через параметризованный конструктор с использованием ключевого слова this. Код демонстрирует класс Person с двумя полями: name и age. В конструкторе необходимо присвоить значения параметров соответствующим полям объекта, избегая конфликта имён между параметрами и полями класса. Выберите из предложенных вариантов правильные выражения для каждого пропуска, чтобы код работал корректно и выводил ожидаемое сообщение.

Нужно правильно расставить в пропуски предложенные варианты
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        // Присваиваем параметры полям класса
        input1S
        input2S
        System.out.println("Создан объект Person: " + this.name + ", " + this.age);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Сборка класса с конструктором

id: 40478_build_full_class_constructor

Из предложенных строк соберите корректную Java-программу, которая определяет класс Person с параметризованным конструктором, создает объект этого класса и выводит информацию о нем. Некоторые строки лишние и не должны входить в решение. Обратите внимание на правильный порядок: объявление класса, объявление полей, конструктор с параметрами, метод main с созданием объекта и выводом.

Перетяните в правильном порядке строки из одного блока в другой
public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println(person.name + " is " + person.age + " years old.");
    }
}
    public Person() {}
        System.out.println("Hello");
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Аргументы или Параметры?

id: 40478_highlight_arguments

В данном задании представлен фрагмент кода на Java, содержащий объявление параметризованного конструктора и его вызов. Вам необходимо выделить фактические значения (аргументы), передаваемые в конструктор при создании объекта с помощью оператора new. Для этого кликните на каждый выделенный сегмент и выберите из списка тип 'Аргумент конструктора'. Обратите внимание, что аргументы — это конкретные значения, которые передаются в конструктор при его вызове.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
public class Book {
    private String title;
    private int pages;

    public Book(String bookTitle, int bookPages) {
        title = bookTitle;
        pages = bookPages;
    }

    public static void main(String[] args) {
        Book myBook = new Book({{"Java Basics"~|~t1}}, {{300~|~t2}});
    }
}
Аргумент конструктора
Переменная
Параметр конструктора
Ключевое слово
Сообщения
Проверить
Показать подсказку

6. Неверный тип данных

id: 40478_constructor_error_fix

В данном фрагменте Java-кода есть ошибка, связанная с использованием параметризованного конструктора. При создании объекта класса Person в аргументы конструктора передаётся значение неверного типа данных. Конструктор ожидает определённые типы параметров, но в вызове оператора new один из аргументов имеет тип, который не соответствует объявлению конструктора. Исправьте ошибку, изменив соответствующий аргумент, чтобы программа могла успешно скомпилироваться и выполниться.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        Person person = new Person("Анна", "25");
        person.displayInfo();
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Состояние после создания

id: 40478_predict_obj_state

Проанализируйте приведённый код на Java, в котором создаётся объект класса Book с использованием параметризованного конструктора. Определите, какое значение будет содержать поле title этого объекта сразу после его создания. Обратите внимание на то, как конструктор обрабатывает переданные аргументы.

Выберите правильный вариант ответа
class Book {
    String title;
    int pages;
    
    Book(String t, int p) {
        title = t.toUpperCase();
        pages = p;
    }
}

public class Main {
    public static void main(String[] args) {
        Book myBook = new Book("Java Basics", 350);
    }
}
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру