Интерфейсы в Java задают контракт: какие методы класс обязан реализовать, если он объявлен через implements. Это ключевая часть полиморфизма: переменная типа интерфейса может ссылаться на разные реализации. Интерфейс может содержать абстрактные методы, а также default и static методы. В этом уроке (уроки Java онлайн) закрепим синтаксис implements, переопределение методов и работу через тип интерфейса — на практических заданиях и тестах в интерактивном тренажере.
- Класс реализует интерфейс: обязателен
overrideметодов - Полиморфизм через ссылку типа интерфейса
default/staticметоды интерфейса
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Реализуй метод интерфейса
В этом задании вам нужно реализовать метод интерфейса в классе Circle. Интерфейс Drawable объявляет метод draw(), который не принимает аргументов и не возвращает значения. Класс Circle должен реализовать этот метод, выведя строку "Drawing a circle". В сигнатуре метода пропущены ключевые элементы: модификатор доступа, тип возвращаемого значения, имя метода и круглые скобки. Ваша задача — заполнить пропуски так, чтобы код компилировался и корректно работал.
interface Drawable {
void draw();
}
class Circle implements Drawable {
@Override
input1S input2S input3S input4S {
System.out.println("Drawing a circle");
}
}2. Класс не реализовал все методы
В данном фрагменте кода на Java класс объявлен как реализующий интерфейс, но из-за ошибки в сигнатуре одного из методов компиляция не пройдёт. Найдите и исправьте строку с ошибкой, чтобы класс корректно реализовал все методы интерфейса.
interface Animal { void makeSound(); int getAge();} class Dog implements Animal { private int age; public Dog(int age) { this.age = age; } public void makeSound() { System.out.println("Woof!"); } public int getAge() { return age; }}3. Полиморфная ссылка на интерфейс
В этом задании вам предстоит заполнить пропуски в коде, демонстрирующем использование полиморфной ссылки на интерфейс в Java. Вы увидите фрагмент программы, где переменная интерфейсного типа должна ссылаться на объект класса-реализации, а затем вызывается метод, определённый в интерфейсе. Вам нужно будет выбрать подходящие элементы из выпадающего списка для каждого пропуска, чтобы код стал корректным и компилировался. Обратите внимание на правильное объявление переменной, создание объекта и вызов метода.
// Объявление интерфейса
interface Drawable {
void draw();
}
// Класс, реализующий интерфейс
class Circle implements Drawable {
public void draw() {
System.out.println("Рисую круг");
}
}
public class Main {
public static void main(String[] args) {
// Создание полиморфной ссылки на интерфейс
input1S input2S = input3S;
// Вызов метода через интерфейсную ссылку
input4S;
}
}4. Собери пример: interface + implements + вызов
Из предложенных строк соберите корректную Java-программу, которая демонстрирует использование интерфейса: объявление интерфейса с методом, класс, реализующий этот интерфейс, и вызов метода из объекта этого класса в методе main. Игнорируйте лишние строки, которые не должны входить в решение. Программа должна корректно компилироваться и выполняться.
interface Greeting { void sayHello();}class EnglishGreeting implements Greeting { public void sayHello() { System.out.println("Hello!"); }}public class Main { public static void main(String[] args) { Greeting greeting = new EnglishGreeting(); greeting.sayHello(); }} System.out.println("Goodbye!");class SpanishGreeting {5. Интерфейс или абстрактный класс: сопоставь свойства
В левой колонке приведены утверждения, описывающие свойства и возможности в Java. В правой колонке указано, к какому типу — интерфейсу или абстрактному классу — относится каждое утверждение. Сопоставьте каждое утверждение слева с соответствующим типом справа. Обратите внимание, что в правой колонке каждый элемент уникален и содержит уточняющую информацию, чтобы избежать неоднозначности.
6. Отметь все места, где используется интерфейс
Внимательно изучите приведённый фрагмент кода на Java. Ваша задача — отметить все места, где используется имя интерфейса (то есть там, где написано слово, обозначающее интерфейс). Не отмечайте имена классов, методов, переменных или другие элементы, если они не являются именем интерфейса.
// Объявление интерфейса
interface {{Drawable~|~t1}} {
void {{draw~|~t5}}();
}
// Класс, реализующий интерфейс
class {{Circle~|~t4}} implements {{Drawable~|~t2}} {
private int radius;
public Circle(int radius) {
this.radius = radius;
}
@Override
public void {{draw~|~t6}}() {
System.out.println("Drawing a circle with radius " + radius);
}
}
public class Main {
public static void main(String[] args) {
// Переменная интерфейсного типа
{{Drawable~|~t3}} {{shape~|~t8}} = new Circle(5);
{{shape~|~t8}}.{{draw~|~t7}}();
}
}