Ответ
В Java механизмы наследования и реализации строго разделены.
1. Наследование классов (одиночное)
Используется ключевое слово extends. Класс-потомок наследует поля и методы (кроме private) родительского класса.
class Vehicle {
void move() { System.out.println("Moving..."); }
}
class Car extends Vehicle { // Car наследует Vehicle
void honk() { System.out.println("Beep!"); }
}
// Использование:
Car myCar = new Car();
myCar.move(); // Унаследованный метод
myCar.honk(); // Собственный метод
2. Реализация интерфейсов
Используется ключевое слово implements. Класс может реализовать несколько интерфейсов, обеспечивая полиморфизм.
interface Drawable {
void draw(); // Неявно public abstract
}
interface Resizable {
void resize(double factor);
}
class Circle implements Drawable, Resizable { // Реализация двух интерфейсов
@Override
public void draw() { System.out.println("Drawing a circle"); }
@Override
public void resize(double factor) { System.out.println("Resizing by " + factor); }
}
3. Ключевая аннотация @Override
Указывает, что метод переопределяет метод суперкласса или реализует абстрактный метод интерфейса. Это повышает читаемость и позволяет компилятору проверить сигнатуру метода.
@Override
public String toString() {
return "Custom object representation";
}