вопрос как работает это: public void swim() { OceanAnimal currentAnimal = (OceanAnimal) getCurrentAnimal(); // эта строчка, смущает getCurrentAnimal() currentAnimal.displaySwim(); } private void displaySwim() { System.out.println(getCurrentAnimal().getClass().getSimpleName() + " is swimming"); } abstract Swimmable getCurrentAnimal(); }