Практика на интерфейсы в Java
Интерфейс Figure задаёт две операции для
плоских фигур: площадь и периметр. Классы с разной
геометрией реализуют один и тот же контракт по-своему.
Контракт объявляют так:
interface Figure {
double area();
double perimeter();
}
Квадрат хранит длину стороны и считает площадь и периметр по формулам:
class Square implements Figure {
private final double side;
public Square(double side) {
this.side = side;
}
@Override
public double area() {
return side * side;
}
@Override
public double perimeter() {
return 4 * side;
}
}
Прямоугольник использует две стороны:
class Rectangle implements Figure {
private final double width;
private final double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
return width * height;
}
@Override
public double perimeter() {
return 2 * (width + height);
}
}
Если метод интерфейса не реализовать, проект не соберётся. Компилятор сразу укажет, какой член контракта пропущен.
Сделайте класс Disk, реализующий интерфейс Figure.
Создайте несколько объектов Square, Rectangle
и Disk. Запишите их в один список типа
Figure в произвольном порядке.
Переберите список и выведите площадь каждой фигуры.
Реализуйте класс FigureCollection с методом
add для добавления Figure и методом
totalArea для суммарной площади всех фигур.