2011-01-26 4 views
5

Рекомендуемые в абстрактном классе?Аннотация или виртуальный метод?

Есть ли виртуальный метод, возвращающий значение null или имеющий абстрактный метод?

Удобно и легко вернуть их в нуль, так как мне не нужно ничего наследовать от абстрактного класса. Но все же возвращение нулевого значения несколько сложно понять, если оно по назначению, ошибке или по дизайну.

Есть ли четкие рекомендации по этому вопросу?

+2

Конечно, * что-либо, что не является должным образом документированным, будет трудно понять. –

ответ

16

Если возврат нулевого значения является разумной и разумной вещью в качестве поведения по умолчанию (с поддержкой документации), то, возможно, virtual в порядке. Аналогично, если вы можете создать разумный дефолт, но просто хотите предложить расширяемость: virtual.

Если (бетонный) класс не может функционировать без внедрения по умолчанию, тогда сделайте это abstract. Сюжетная сценария здесь: Stream: без разумной реализации , откуда взялись бы байты? (/ перейти к).

2

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

Смежные вопросы