В основном у меня небольшая проблема.
У меня есть суперкласс и подкласс.Я должен сделать назначение, где я выполняю метод из подкласса, который переопределяет метод из суперкласса.Это отлично работает.У меня проблема с «динамическим связыванием».Когда я объявляю тип ссылочной переменной того же класса, что и подкласс, он работает нормально.Однако, когда я объявляю тип как принадлежащий суперклассу, он не распознает ни один из методов подкласса, чтобы даже существовать.
Вот пример.У меня есть класс с именем Ship и другой подкласс Ship с именем BabyShip
Если я объявлю ссылку на ShippyShip как:
BabyShip subref = new BabyShip();
Это прекрасно работает.Однако, когда я объявляю это как:
Ship subref = new BabyShip();
Компилятор даже не распознает ни один из методов BabyShip, если я объявляю тип subref как Ship ... но моя книга ясно говорит, что этодолжен.Почему он это делает?
Это дает обычную ошибку не удается найти символ, когда я его компилирую.
ShipTester.java:8: error: cannot find symbol
ship.setMaxPassengers(1);
^
symbol: method setMaxPassengers(int)
location: variable ship of type Ship
1 error