((Person.User) person).live();
Не понял эту конструкцию.
Person person = new User(); зачем тогда это, я думал так мы сразу создаем объект класса User. А оказалось так мы создали объект Person (судя по надобности вышеуказанной конструкции сужения до User'а), то нахрена new User() вместо обычного Person person = new Person() ?
Вопрос скорее всего тупой, но лучше спросить, чем делать не понимая😁
package com.javarush.task.task14.task1411;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
User, Loser, Coder and Proger
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
String key = null;
while (true) {
key = reader.readLine();
if (key.equals("user")) {
person = new Person.User();
}
else if (key.equals("loser")) {
person = new Person.Loser();
}
else if (key.equals("coder")) {
person = new Person.Coder();
}
else if (key.equals("proger")) {
person = new Person.Proger();
}
else break;
doWork(person); //вызываем doWork
}
}
public static void doWork(Person person) {
if (person instanceof Person.User)
((Person.User) person).live();
else if (person instanceof Person.Loser)
((Person.Loser) person).doNothing();
else if (person instanceof Person.Coder)
((Person.Coder) person).writeCode();
// else if (person instanceof Person.Proger)
// ((Person.Proger) person).enjoy();
}
}