abstract & static в C#
3 отговора
395 прегледа
abstract & static в C#
Здравейте ,
някой знае ли защо статичните членове не могаат да бъдат абстрактни? в смисъл какво налага това ограничение?
някой знае ли защо статичните членове не могаат да бъдат абстрактни? в смисъл какво налага това ограничение?
Re: abstract & static в C#
Не само в Ц#, ами и на всякъде. Сатичната ф-я е член на класа само наужким. Реално, все едно е глобална.
Re: abstract & static в C#
Защото не могат да бъдат виртуални
Доколкото знам общоприетата терминология е "pure virtual" member function, не "абстракетн член" (има само абстракен базов клас). Идеята на тези функции е че само дефинираш как се извикват без да предлагаш реализация, реализацията я правят наследниците. Но статичните функции се отнасят за техния си клас и не се override-ват (предефинират) в наследниците, това няма смисъл за статични функции и съответно няма механизъм който да реализира нещо такова.
Редакция: Опа, видях че питаш за C# а аз ти отговарям за С++, така че това обяснение което ти дадох не е много смислено.
static се отнася за класа а не за конкретния instance и не се предефинират, затова няма смисъл да са абстрактни
Доколкото знам общоприетата терминология е "pure virtual" member function, не "абстракетн член" (има само абстракен базов клас). Идеята на тези функции е че само дефинираш как се извикват без да предлагаш реализация, реализацията я правят наследниците. Но статичните функции се отнасят за техния си клас и не се override-ват (предефинират) в наследниците, това няма смисъл за статични функции и съответно няма механизъм който да реализира нещо такова.
Редакция: Опа, видях че питаш за C# а аз ти отговарям за С++, така че това обяснение което ти дадох не е много смислено.
static се отнася за класа а не за конкретния instance и не се предефинират, затова няма смисъл да са абстрактни
Редактирано от Nero на
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.
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.