Сравниваю две задачи: 1407 и эту.
В этой задаче достаточно написать в методе println: System.out.println(bridge.getCarsCount()); Компилятор сам поймет о каком мосте идет речь, хотя тип ссылки Bridge.
В задаче же 1407 про Player и Dancer требуется для начала сузить тип ссылки с Person до Player или Dancer в зависимости от того, на объект какого типа она указывает, а потом уже вызывать методы person.play() или person.dance() примерно вот так:
public static void haveRest(Person person) {
if (person instanceof Player)
{
(Player person).play();
}
if (person instanceof Dancer)
{
((Dancer)person).dance();
}
}
Подскажите, пожалуйста, почему в одном случае компилятор определяет набор функций, к которым есть доступ по объекту, а в другом по ссылке?
Где об этом можно почитать подробнее?