У меня есть абстрактный класс Airplane и два класса PassengerAirplane и CargoAirplane, которые расширяют класс самолета. У меня также есть интерфейс Измеримый и два класса, которые его реализуют - Люди и Контейнеры.
Таким образом, самолет может делать много вещей сам по себе, и есть метод, который позволяет измерить вещи, которые нужно добавить в самолет (так называемый addAMeasurableThing). Единственная разница между PassengerAirplane/CargoAirplane и просто самолетом заключается в том, что addAMeasurableThing должен принимать только Люди/Контейнеры, а не какие-либо измеримые вещи. Как это реализовать?Вопрос о наследовании Java
Я попытался сделать:
Самолет класс:
общественного абстрактную Самолет addAMeasurableThing (отслеживаемые м, внутр положение);
PassengerAirplane класс:
общественный самолет addAMeasurableThing (измеримые м, внутр положение) {если (м InstanceOf людей) ...
CargoAirplane класс:
общественный самолет AddAMeasurableThing (Meas urable м, внутр положение) {если (м InstanceOf контейнеров) ...
Но когда я ее отладки, я заметил, что addAMeasurableThing в классе CargoAirplane никогда не вызывается, потому что оба метода имеют одинаковые подпись. Итак, как можно вызывать подходящий PassengerAirplane/CargoAirplane addAMeasurableThing в зависимости от типа измеримой вещи, которая передается?
Спасибо!
Возможно, вы можете добавить еще какой-нибудь свой код, похоже, что что-то еще происходит. –
Да, вопрос непонятен. Что вы имеете в виду? «Я заметил, что addAMeasurableThing в классе CargoAirplane так и не получил вызов, потому что оба метода имеют одну и ту же подпись». Какова ваша реализация тестового класса? –
Вы уверены, что используете метод? Потому что, если вы, вы не должны иметь проблему, которую вы описываете. –