((Person.User) person).live(); Не понял эту конструкцию. Person person = new User(); зачем тогда это, я думал так мы сразу создаем объект класса User. А оказалось так мы создали объект Person (судя по надобности вышеуказанной конструкции сужения до User'а), то нахрена new User() вместо обычного Person person = new Person() ? Вопрос скорее всего тупой, но лучше спросить, чем делать не понимая😁