Вы определили метод presents()
, который возвращает int
в Gift
интерфейсе. Затем вы пытаетесь переопределить метод presents()
с обратным типом void
в классе с именем myClass
.
Совершенно очевидно, что int
не является void
. Это означает, что тип возврата несовместим.
Вы вводите в заблуждение с наследованием методов. Проблема заключается в том, что синтаксис Java (и все C-подобные языки) не диктует использование возвращаемого значения, так что даже если вы метод возвращает int
вы все еще можете назвать это как следующее:
presents();
Итак, предположим, этот компилятор позволяет вам иметь 2 разных метода с именем presents()
: тот, который возвращает int
, другие возвращает void
. Как компилятор может понять, какой из методов использовать в нашем примере? Ответ никоим образом. Это является причиной того, что вы можете переопределять методы с использованием подписи различных параметров, например.
presents();
presents(String str);
presents(int n);
Вы не можете иметь 2 метода с одинаковыми сигнатурами параметров и другим типом возврата.
Не допустили ли ошибки компилятора? –
аннотация void presents(); имеет возвращаемый тип void, в то время как представление интерфейса() имеет тип возврата int ... Чувак серьезно? – Thihara
И теперь он сбрасывает все правильные ответы. – chrylis