2016-11-08 2 views
0

Этот вопрос задает интервьюер в одном из моих интервью.Можно ли создать абстрактный класс без использования абстрактного ключевого слова?

мы можем избежать создания экземпляра класса, используя приватный конструктор, то мы не можем наследовать тот класс

Спасибо Advanve

+0

Частные конструкторы используются в реализациях Singleton, которые не являются абстрактными. –

ответ

0

Ну вы можете использовать частный конструктор, но это не делает ваш класс абстрактным.

Это просто означает, что другие классы не могут создать новый экземпляр вашего класса.

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

Если вы не хотите, чтобы класс быть инстанциированы вообще, никогда никогда не используйте ключевое слово Аннотации ...

0

Если вы хотите использовать объект только в «наследстве-иерархии» вам нужно protected-keyword (см. также для модификаторов доступа вообще https://msdn.microsoft.com/en-Us/library/wxh6fsc7.aspx)

Если вы хотите иметь абстрактное поведение, в чем причина не брать абстрактное ключевое слово?

+0

Единственная залоговая причина для частного класса, кстати, я считаю, что вы найдете здесь: https://social.msdn.microsoft.com/Forums/en -US/ffa250ea-cb88-4a17-a1fe-876997dfa96f/private-class-in-c? Forum = csharplanguage Но в большинстве случаев я бы взял либо публичный класс с частными членами/методами, либо абстрактным классом, как «мать -класс "... Надеюсь, что помогает – Joshit

+0

Мне не нужно это поведение. Я задал вопрос, заданный моим интервьюером. Я хочу знать, может ли создать абстрактный класс без использования абстрактного ключевого слова – Mahendar

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