Подскажите, ребят. Есть интерфейс Person, в нём классы, которые имплементят этот же Person, когда я к Solution подключу Person, мне всё равно при приведении надо писать (Person.User)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 = reader.readLine();
//тут цикл по чтению ключей, пункт 1
while(true){
if(key.equals("coder")||key.equals("proger")||key.equals("user")||key.equals("loser")){
switch (key){
case "coder":person = new Person.Coder();break;
case "loser":person = new Person.Loser(); break;
case "proger":person = new Person.Proger(); break;
case "user":person = new Person.User(); break;}
doWork(person);}
else {break;}}
//создаем объект, пункт 2
//вызываем doWork
public static void doWork(Person person) {
// пункт 3
if(person instanceof User){person.live();}
if(person instanceof Coder){person.writeCode();}
if(person instanceof Loser){person.doNothing();}
if(person instanceof Proger){person.enjoy();}
}
}