Реализуйте все классы и интерфейсы как это показано на UML-диаграмме внизу. Пусть само тело методов выводит сообщения на экран вида Cat.eat, где Cat имя класса, а eat - метода, чтобы можно было понять вызов какого метода и класса произошел. Абстрактный класс Animal уже создан, нужно дополнить иерархию в соответствии с диаграммой. Пусть все типы содержат конструкторы без аргументов, вызывающие конструктор Animal c передачей числа конечностей (например super(4)). public abstract class Animal { protected int legs; public Animal(int legs) { this.legs = legs; } public abstract void walk(); public abstract void eat(); }