Методы имеют одинаковую подпись. Это означает, что методы выглядят одинаково после того, как все типы были приведены к их наиболее компактной форме, и вся (казалось бы) избыточная информация была удалена во время компиляции. Это то, что в конечном итоге «предварительно скомпилировано» в файлы .class
.
Что запоминает компилятор о методе интерфейса:
name: myMethod, returns: void, parameters: {}
Что запоминает компилятор о методе интерфейса:
name: myMethod, returns: void, parameters: {}
(Для обоих методов компилятор также помнит, что они являются экземплярами-методами, в отличие от статических методов, и, следовательно, на самом деле есть параметр [объект 'this']. Но это интересно только позже разработчик life :))
Итак, по сути, это один и тот же метод для компилятора.
Другими словами, класс, который вы расширяете, покрывает этот метод для вас, и вам не нужно реализовывать его явно. Однако вы можете (если хотите) переопределить поведение вашего расширенного класса B
и сделать что-нибудь еще, если потребуется.