Добрый день. Задачу решил, но интересует следующий вопрос. Почему в классах Orca и Whale компилятор не просит реализовать методы родителельского класса SeaCreature - private void displaySwim() и метод интерфейса - public void swim()
Т.е. мне казалось, если мы наследуем какой-то класс или интерфейс, то мы обязаны реализовать все его методы. Объясните пожалуйста
package com.javarush.task.task14.task1416;
/*
Стой, кто плывет?
*/
public class Solution {
public static void main(String[] args) {
CanSwim creature = new Orca();
creature.swim();
creature = new Whale();
creature.swim();
creature = new RiverOtter();
creature.swim();
}
public static void test(CanSwim creature) {
creature.swim();
}
interface CanWalk {
void walk();
}
interface CanSwim {
void swim();
}
static abstract class SeaCreature implements CanSwim {
public void swim() {
SeaCreature currentCreature = (SeaCreature) getCurrentCreature();
currentCreature.displaySwim();
}
private void displaySwim() {
System.out.println(getCurrentCreature().getClass().getSimpleName() + " is swimming");
}
abstract CanSwim getCurrentCreature();
}
static class Orca extends SeaCreature {
}
static class Whale extends SeaCreature {
}
static class RiverOtter extends SeaCreature implements {
public void swim(){
}
public void walk(){
}
}
}