Ответ
Методы, не имеющие реализации (тела), — это абстрактные (abstract) методы.
Где они объявляются:
-
В абстрактных классах:
abstract class Animal { // Абстрактный метод — нет тела, только сигнатура. abstract void makeSound(); // Обычный метод — имеет реализацию. void sleep() { System.out.println("Zzz..."); } } - В интерфейсах (до Java 8): Все методы интерфейса по умолчанию были
public abstract.
Как они используются: Абстрактный метод обязан быть реализован (переопределен) в первом конкретном (неабстрактном) классе-наследнике.
class Dog extends Animal {
// Реализация абстрактного метода.
@Override
void makeSound() {
System.out.println("Гав!");
}
}
Исключение (с Java 8): В интерфейсах появились методы default и static, которые имеют реализацию.