Как интерфейсы обеспечивают 100% абстракцию, когда мы можем использовать методы default и stati c? - PullRequest
1 голос
/ 10 апреля 2020

Если мы можем использовать методы по умолчанию и stati c в интерфейсе и реализовать его в других классах, то как мы можем сказать, что интерфейс достигает 100% абстракции?

1 Ответ

2 голосов
/ 10 апреля 2020

Можем ли мы сказать, что интерфейс достигает 100% абстракции?

Я думаю, мы все еще можем сказать это. Или, по крайней мере, мы можем сказать, что static и default в интерфейсе не усложняют достижение 100% абстракции 1 .

A static в методе Интерфейс ничем не отличается от метода static в классе. В обоих случаях API метода является границей абстракции для кода в теле метода.

Мы можем сделать тот же аргумент для метода default. Тело метода может делать вещи, которые являются общими для реализации всех экземпляров всех потомков интерфейса, но детали все еще скрыты от вызывающей стороны. Это граница абстракции.

То, что делают методы default и static, состоит в том, чтобы позволить границе абстракции быть реализованной дальше вверх по графу наследования. Если вы используете их правильно, это хорошо, потому что он удаляет избыточный или дублирующий код.


1 - Программист должен спроектировать и реализовать API, чтобы не быть утечкой абстракции. Простое использование интерфейсов не решает эту проблему.

...