package com.javarush.test.level14.lesson08.home08;
/* Исправление ошибок
1. Подумать, как связаны интерфейсы Swimable(способен плавать) и Walkable(способен ходить) с классом OceanAnimal(животное океана).
2. Расставить правильно наследование интерфейсов и класса OceanAnimal.
3. Подумать, как могут быть связаны классы Orca(Косатка), Whale(Кит), Otter(Выдра) с классом OceanAnimal.
4. Расставить правильно наследование между классами Orca, Whale, Otter и классом OceanAnimal.
5. Подумать, какой класс должен реализовать интерфейс Walkable и добавить интерфейc этому классу.
6. Подумать, какое животное еще не умеет плавать и добавить ему интерфейс Swimable.
*/
public class Solution
{
public static void main(String[] args)
{
Swimable animal = new Orca();
animal.swim();
animal = new Whale();
animal.swim();
animal = new Otter();
animal.swim();
}
public static void test(Swimable animal)
{
animal.swim();
}
static interface Walkable
{
void walk();
}
static interface Swimable
{
void swim();
}
static abstract class OceanAnimal
{
public void swim()
{
OceanAnimal currentAnimal = (OceanAnimal) getCurrentAnimal();
currentAnimal.swimming();
}
private void swimming()
{
System.out.println(getCurrentAnimal().getClass().getSimpleName() + " is swimming");
}
abstract Swimable getCurrentAnimal();
}
static class Orca extends OceanAnimal implements Swimable
{
@Override
Swimable getCurrentAnimal()
{
return this;
}
}
static class Whale extends OceanAnimal implements Swimable
{
@Override
Swimable getCurrentAnimal()
{
return this;
}
}
static class Otter implements Swimable, Walkable
{
@Override
public void swim()
{
}
@Override
public void walk()
{
}
}
}
Leave A Comment