abstract & static в C#

3 отговора 395 прегледа
#1

abstract & static в C#

Здравейте ,
някой знае ли защо статичните членове не могаат да бъдат абстрактни? в смисъл какво налага това ограничение?

Отговор
в отговор на c #2

Re: abstract & static в C#

Не само в Ц#, ами и на всякъде. Сатичната ф-я е член на класа само наужким. Реално, все едно е глобална.



Отговор
в отговор на c #3

Re: abstract & static в C#

Защото не могат да бъдат виртуални

Доколкото знам общоприетата терминология е "pure virtual" member function, не "абстракетн член" (има само абстракен базов клас). Идеята на тези функции е че само дефинираш как се извикват без да предлагаш реализация, реализацията я правят наследниците. Но статичните функции се отнасят за техния си клас и не се override-ват (предефинират) в наследниците, това няма смисъл за статични функции и съответно няма механизъм който да реализира нещо такова.

Редакция: Опа, видях че питаш за C# а аз ти отговарям за С++, така че това обяснение което ти дадох не е много смислено.

static се отнася за класа а не за конкретния instance и не се предефинират, затова няма смисъл да са абстрактни

Редактирано от Nero на

Отговор
в отговор на c #4

Re: abstract & static в C#

Abstrakten method na class e metod bez implementacia. Toi ne moje da bude izvikvan zashtoto niama implementacia. Ako class ima pone edin abstrakten metod tova oznachava che classa e abstrakten i ne moje da ima instancii (obekti). Tova garantira che abstraktnia metod (bez implementacia) niama da se vika.
Statichen metod e metod koito moje da se vika s imeto na classa i ne e neobhodimo da ima instancia na classa za da se izvika metoda. Daden statichen metod e obsht (edin i susht za vsichki instacii na classa, zashtoto moje da se vika ne samo s imeto na classa no i sus negovi instacii).
Ako mojem da imame staitichen abstrakten metod, togava sus imeto na abstraktnia (ima abstrakten metod znachi e abstrakten class) class shte mojem da izvikame abstraktnia (statichen) metod, koito niama implementacia.

Отговор