Реализация абстрактного класса Java и методов интерфейса - PullRequest
2 голосов
/ 19 сентября 2011

Если у вас есть интерфейс (Position) с 3 методами (x (), y () и z ()), а также есть абстрактный класс, давайте назовем его Shape.

Shape реализует Position и дает код только для x () и y (). Компилятор неявно догадывается, что z () является абстрактным методом?

Ответы [ 5 ]

3 голосов
/ 16 января 2016

Компилятор Java добавляет общедоступные и абстрактные ключевые слова перед методом интерфейса, а также общедоступные, статические и окончательные ключевые слова перед элементами данных.

enter image description here

3 голосов
/ 19 сентября 2011

Да. Поскольку Shape является абстрактным, не требуется реализовывать все методы Position. Это потребуется для любого конкретного класса.

0 голосов
/ 19 сентября 2011

каждый неабстрактный класс должен обеспечивать реализацию для всех методов, определенных в любом из его абстрактных суперклассов или интерфейсов.Компилятор достаточно умен, чтобы проверить всю иерархию классов, чтобы определить, что вы забыли реализовать что-то, для чего ваш класс заявляет, что обеспечивает реализацию.

0 голосов
/ 19 сентября 2011

Абстрактные классы не должны реализовывать все методы.Это ответственность их конкретного класса / реализации.В этом случае yes z() будет рассматриваться как абстрактный метод Shape.

0 голосов
/ 19 сентября 2011

да, поскольку вы не сможете создать экземпляр абстрактного класса (Shape), компилятор знает, что z () будет реализован другим дочерним классом (Shape).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...