2011-06-15 14 views

cevap

7

Bunu koyabilirsiniz ve ayrı bir derlemede sınıfları türetilmiş olabilir ve temel sınıfın kurucusunu internal olarak bildirebilirsiniz. Bu şekilde farklı bir mecliste miras alsanız da, türetilmiş herhangi bir sınıfı başaramazsınız.

+0

için bir kesmek ile gelebilecekse ilginç olurdu Nasıl miras kalıyor, ancak nasıl başaramazsınız? – Mehrdad

+3

@Mehrdad: Türetilen sınıf, tabanının yapıcısını çağırdığı için, bu kurucuya erişebilmesi gerekir. 'Dahili' seçeneğine erişim, yalnızca aynı montajda (veya arkadaş montajlarında) türetilmiş sınıfların üssü aramalarına izin verir. Ayrıca türetilmiş sınıfların “mühürlenmiş” olması gerektiği de unutulmamalıdır. –

+0

@Travis: Ama türetilmiş sınıfların somutlaştırılmadığını nasıl uygulayabilirsin? – Mehrdad

-1

Sen sınıfı A Perle GEDİK yapmak ve sınıfların herhangi bir sayı içinde devralabilir ..

+1

Bu durumda düşünüyorum N = 3 –

+0

@ Tom: Abatishchev tarafından verilen cevaba bakın, sadece aynı şeyi anlatmak istedim .. Ben ipucu sonra düşündüm, soru soran google olabilir ... – Stuti

4

Hayır, ama her zaman sınırını aşarsa yapıcı bir istisna yapabilirsiniz.

+0

kaç sınıf A'dan miras alır? –

+0

Temel sınıf yapıcısında bir hashtable içinde 'this' kayıt tipleri. – Koterpillar

3
// can be inherited only by classes in the same assembly 
public abstract class A 
{ 
    protected internal A() { } 
} 

// can't be inherited 
public sealed class B : A 
{ 
} 
1

Sadece benim kişisel yetiştirme için, "Ah, çok çok kötü bir fikir! A idi başlığı okuduktan benim ilk düşüncenin beri böyle bir tasarım seçimi arzu yapmak iş bağlamında, hakkında daha fazla bilgi edinmek istiyorsunuz baz sınıfı ASLA türetilmiş sınıfları bir şey (ve daha kötüsü: kural) bilmek gerekiyordu.

İlgili konular