2016-01-30 4 views
2

Является ли хорошей практикой иметь частные не абстрактные методы в абстрактном классе?частные не абстрактные члены в абстрактном классе и наследование C#

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

+2

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

+1

Вы можете увидеть и пример в шаблоне шаблона (https://en.wikipedia.org/wiki/Template_method_pattern). Базовый класс является абстрактным и имеет защищенные и общедоступные методы. –

ответ

3

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

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