2013-05-30 2 views
0

Я изучаю C#. У меня есть некоторые сомнения относительно абстрактного класса. абстрактный класс не позволяет создавать экземпляр. Почему конструктор поддержки C# для абстрактного класса. Какова главная цель здесь? Большое спасибо.C# аннотация класс contructor

ответ

5

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

0

Классы, которые вытекают из вашего класса abstract, потребуют создания конструктора экземпляра для «цепочки» из своих конструкторов.

Как говорит Грант, ваш конструктор абстрактного класса может настроить много («конкретного») состояния, которое может иметь ваш абстрактный класс.

Примечание: конструкторы экземпляров абстрактного типа должны никогда be public. Это будет путать, по причинам вашего вопроса. Сделайте их protected вместо (или, возможно, internal (неprotected internal) или private).

Если не писать какие-либо экземпляр конструкторов явно, компилятор будет генерировать «по умолчанию» конструктор для вас, и это будет protected для абстрактного класса.

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