metoda coś powinna zwracać i jest wykorzystywana w innych miejscach kodu, niestety stoję z tym zadaniem od 2h...
Proszę o wytłumaczenie.
package pl.codegym.task.task14.task1416;
/*
Naprawianie błędów
*/
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() + " pływa");
}
abstract CanSwim getCurrentCreature();
}
static class Orca extends SeaCreature implements CanSwim {
public void swim() {
SeaCreature currentCreature = (SeaCreature) getCurrentCreature();
currentCreature.displaySwim();
}
private void displaySwim() {
System.out.println(getCurrentCreature().getClass().getSimpleName() + " pływa");
}
public CanSwim getCurrentCreature() {
return Object;
}
}
static class Whale extends SeaCreature implements CanSwim {
public void swim() {
SeaCreature currentCreature = (SeaCreature) getCurrentCreature();
currentCreature.displaySwim();
}
private void displaySwim() {
System.out.println(getCurrentCreature().getClass().getSimpleName() + " pływa");
}
public CanSwim getCurrentCreature() {
return Object;
}
}
static class RiverOtter implements CanSwim, CanWalk {
public void swim() {
System.out.println("ja też umiem pływać");
}
public void walk() {
System.out.println("... na dodatek... umiem chodzić...");
}
}
}