Но я не могу выполнить это, потому что B расширяет A
Нет, вы не можете скомпилировать это, потому что у вас есть два переопределенных метода в одном классе . Это не сработает, если вы измените один из методов для возврата, скажем, String
.
Тип возвращаемого значения не является частью сигнатуры метода в Java, поэтому вы не можете определить два метода, которые отличаются только типом возвращаемого значения.
Самое простое решение - переименовать хотя бы один из методов, например, fromB
и fromA
. Или же поместите методы в отдельные классы.
(Существуют и другие способы его компиляции, но в основном они включают добавление ненужных дополнительных вещей к сигнатуре метода, например, дополнительные неиспользуемые параметры. Переименование методов - самый чистый подход.)