зачем вам знать, является ли метод абстрактного класса абстрактным - PullRequest
4 голосов
/ 13 мая 2011

Мне задали вопрос. Это следующее:

Документация API абстрактного класса говорит вам, является ли метод абстрактно. Когда и зачем вам это знать?

Любая помощь будет оценена.

Ответы [ 4 ]

9 голосов
/ 13 мая 2011

Вам нужно знать, какие методы являются абстрактными, потому что вам нужно будет предоставить реализации для этих методов при наследовании класса.

2 голосов
/ 13 мая 2011

В качестве дополнения к ответу Фредрика он также указывает, какое поведение предполагается изменить.

Обычно вы можете переопределить метод (если метод не финальный, а класс не финальный), но на практике это может быть очень сложно, если класс специально не предназначен для изменений. Может случиться так, что существующие методы предполагают какое-то поведение метода, который вы переопределяете, который не указан (это бывает) и который вы не предоставляете.

Явно объявляя метод абстрактным, вы выражаете намерение, что метод будет реализован кем-то другим. Это также обычно означает, что документация абстрактного метода немного более полна в отношении ожидаемого поведения.

0 голосов
/ 13 мая 2011

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

Я советую вам взглянуть на следующие книги о шаблонах проектирования,потому что они упоминают эти вещи и тоже практикуются:

http://oreilly.com/catalog/9780596007126

0 голосов
/ 13 мая 2011

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

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