Как компилятор Java проверяет, все ли методы интерфейса реализованы?
Если я заявляю, что мой объект реализует интерфейс, но не реализует эти методы, при компиляции кода я получаю ошибку компилятора. Как Java-компилятор узнал, что я не реализовал все методы интерфейса?
1 ответ
Как Java-компилятор узнал, что я не реализовал все методы интерфейса?
Он знает все методы, реализованные вашим классом, потому что он нашел и проанализировал их во время компиляции.
Он знает все методы, которые были определены во всех суперклассах и интерфейсах вашего класса, потому что:
он либо просто скомпилировал их исходный код, либо загрузил их файлы ".class", и
он проанализировал интерфейсы / классы и выяснил, какие методы должны быть реализованы вашим классом.
Затем он сравнивает два набора методов. (Обратите внимание, что методы не обязательно должны быть одинаковыми. Например, фактический метод может возвращать подтип возвращаемого типа метода в интерфейсе. Сравнение наборов должно учитывать это.)
(На самом деле, это всего лишь один из подходов к этой проверке. Реальный компилятор Java может выполнять проверку немного по-другому.)