-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
141 lines (101 loc) · 4.28 KB
/
Solution.java
File metadata and controls
141 lines (101 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.javarush.task.task14.task1416;
//I know, and am persuaded in the Lord Jesus, that nothing is unclean of itself;
//except that to him who considers anything to be unclean, to him it is unclean. (Romans 14:14)
/*
Исправление ошибок
*/
public class Solution {
public static void main(String[] args) {
Swimmable animal = new Orca();
animal.swim();
animal = new Whale();
animal.swim();
animal = new Otter();
animal.swim();
}
public static void test(Swimmable animal) {
animal.swim();
}
interface Walkable {
void walk();
}
interface Swimmable {
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 Swimmable getCurrentAnimal();
}
static class Orca extends OceanAnimal implements Swimmable {
public void swim() {}
public Swimmable getCurrentAnimal(){return this;}
}
static class Whale extends OceanAnimal implements Swimmable {
public void swim() {}
public Swimmable getCurrentAnimal() {return this;}
}
static class Otter implements Swimmable, Walkable {
public void swim() {}
public void walk() {}
}
}
/*
Исправление ошибок
1. Подумай, как связаны интерфейсы Swimmable(способен плавать) и Walkable(способен ходить) с классом OceanAnimal(животное океана).
2. Расставь правильно наследование интерфейсов и класса OceanAnimal.
3. Подумай, как могут быть связаны классы Orca(Косатка), Whale(Кит), Otter(Выдра) с классом OceanAnimal.
4. Расставь правильно наследование между классами Orca, Whale, Otter и классом OceanAnimal.
5. Подумай, какой класс должен реализовать интерфейс Walkable и добавить интерфейс этому классу.
6. Подумай, какое животное еще не умеет плавать и добавить ему интерфейс Swimable.
Требования:
1. Косатка(Orca) является животным океана(потомком OceanAnimal) и умеет плавать(поддерживает интерфейс Swimmable).
2. Кит(Whale) является животным океана(потомком OceanAnimal) и умеет плавать(поддерживает интерфейс Swimmable).
3. Выдра(Otter) умеет ходить(поддерживает интерфейс Walkable) и плавать(поддерживает интерфейс Swimmable).
4. Выдра(Otter) НЕ является животным океана(потомком OceanAnimal).
5. Кит(Whale) и Косатка(Orca) НЕ умеют ходить(не поддерживают интерфейс Walkable).
package com.javarush.task.task14.task1416;
/*
Исправление ошибок
*/
public class Solution {
public static void main(String[] args) {
Swimmable animal = new Orca();
animal.swim();
animal = new Whale();
animal.swim();
animal = new Otter();
animal.swim();
}
public static void test(Swimmable animal) {
animal.swim();
}
interface Walkable {
void walk();
}
interface Swimmable {
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 Swimmable getCurrentAnimal();
}
static class Orca {
}
static class Whale {
}
static class Otter {
}
}
*/