Решил реализовать один общий метод в абстрактном классе, дабы не реализовывать его в каждом не абстрактном классе. Все нужные методы в конечных классах есть, полиморфизм вроде как тоже применим ибо ссылке типа Movable можно присвоить объект класса, который не реализует интерфейс напрямую.
public static void main(String[] args) {
Animal animal = new Dog();
Dog dog = (Dog) animal;
Movable movable = new Cat();
Cat cat = (Cat) movable;
Mouse mouse = new Mouse();
}
Но, валидатор говорит что нужно имплементировать интерфейсы напрямую.
Для валидатора то я код перепишу, просто насколько я понял из того что я читал на данный момент - общее поведение для группы классов лучше выносить в абстрактный класс родитель, так ведь?package com.javarush.task.task13.task1315;
/*
Том, Джерри и Спайк
*/
public class Solution {
public static void main(String[] args) {
}
//может двигаться
public interface Movable {
void move();
}
//может быть съеден
public interface Edible {
void beEaten();
}
//может кого-нибудь съесть
public interface Eat {
void eat();
}
public abstract class Animal implements Movable{
@Override
public void move() {
}
}
public class Dog extends Animal implements Eat{
@Override
public void eat() {
}
}
public class Cat extends Animal implements Eat,Edible{
@Override
public void beEaten() {
}
@Override
public void eat() {
}
}
public class Mouse extends Animal implements Edible{
@Override
public void beEaten() {
}
}
}