2014-10-31 31 views
5

Statik sınıfların ve mühürlenmiş sınıfların ne olduğunu anlıyorum ve düzenli olarak uzantı yöntemleri kullanıyorum, sadece merak ediyorum — kimse statik sınıflarının neden C# ile mühürlendiğini biliyor mu?Statik sınıflar neden mühürlendi?

MSDN ve C# dil belirtimlerine baktım, ancak hiçbir zaman gerçekten neden mühürlendiklerini yazmıyor.

Neden statik sınıflardan miras almamalı ve statik üyeleri vb. Geçersiz kılmamalıyız?

Düzenleme:

Ben cevaplarınızı takdir ediyorum, ama yine de statik sınıf ne bahsediyoruz. Yöntemlerini neden geçersiz kıldığımı biliyorum. Ama ben neden böyle yaptığını soruyorum.

Gerçekten veterinerler bu kadar pahalı mı? Neden bir langauge tasarlasın ki statik sınıflar tam anlamıyla statik midir? Sadece gelenek mi? Göremediğim başka bir avantaj var mı?

(Ben temelde statik sınıfların noktasını yanlış anlama ediyorum sinsi bir şüphe var.) Statik üyeleri geçersiz kılamaz çünkü statik sınıflar devralamaz

+0

Sınıf statik olmasa bile, herhangi bir statik üyeyi geçersiz edemezsiniz; Onları sadece gölgeleyin ... Neden tekil gibi bir tasarım deseni kullanmıyorsunuz, bunun yerine üyeleri geçersiz kılıyorsunuz (çünkü bu sınıf değil, statik bir örnek) ya da diğer tasarım kalıpları? –

+0

@BrianMains Bu bir singleton değil, bir sıfırton. Tam olarak değil, hiç bir örnek yoktur. – Servy

+1

@Servy Brian'ın OP'nin bir tekil kullanmasını önerdiğini, statik bir sınıfın tek olduğunu düşünmüyorum. – DavidG

cevap

6

. Statik üyeleri geçersiz kılabilirsiniz çünkü tüm geçersiz kılma üyeleri kavramı, örtük parametrenin türündeki sanal gönderime bağımlıdır ve statik üyelerin gönderilecek gizli bir parametresi yoktur.

+1

"sanal gönderim" konusunda ayrıntılı bilgi verebilir misiniz? Google'a cahil görünmeden bakabilirim, sadece merak ediyorum. – RadioSpace

+0

@RadioSpace Bu oldukça karmaşık bir konu. Daha fazla bilgi edinmek istiyorsanız sadece google. Bu bir SO cevabının kapsamının ötesindedir. – Servy

+0

benim için yeterince iyi. Teşekkürler. Zaten google terimlerine göz atıyorum. – RadioSpace

4

Bir sınıfı mühürlemek, onu bir üst sınıf olarak kullanamayacağınız anlamına gelir. static sınıfının yapılması, bunları temel sınıflar olarak işe yaramaz kılar çünkü geçersiz kılma yöntemlerine sahip olamazlar. Bu nedenle, statik bir sınıftan türetilmesi şüpheli bir değere sahiptir: biri korumalı yöntemleri statik bir temelden paylaşabileceğinizi iddia edebilir, ancak sonradan "tek yönlü bir yol" söz konusudur, çünkü türetilmiş sınıflar yararlı geçersiz kılmalar sağlayarak üslerinin işlevselliğini değiştiremezler. .

Bu, statik sınıfların kullanımını, ad alanı benzeri yöntem sahibi ve ilişkili statik verilere indirger. Bu tür sınıfların diğer statik sınıflara miras kalmasına izin vermek, işlevsellik ya da rahatlık açısından çok az eklenirken bu amacı daha az açık hale getirecektir.

İlgili konular