Gölgeleme ve Geçersiz Kılma Arasındaki Farklar (Visual Basic)
Bir temel sınıftan devralan bir sınıf tanımladığınızda, bazen türetilmiş sınıftaki bir veya daha fazla temel sınıf öğesini yeniden tanımlamak istersiniz. Bu amaçla hem gölgelendirme hem de geçersiz kılma kullanılabilir.
Karşılaştırma
Gölgeleme ve geçersiz kılma, türetilmiş bir sınıf bir temel sınıftan devraldığında ve her ikisi de bildirilen bir öğeyi diğeriyle yeniden tanımladığında kullanılır. Ancak ikisi arasında önemli farklılıklar vardır.
Aşağıdaki tablo gölgelendirmeyi geçersiz kılma ile karşılaştırır.
Karşılaştırma noktası | Gölge Kullanım | Geçersiz kılma |
---|---|---|
Purpose | Türetilmiş sınıfınızda önceden tanımladığınız bir üyeyi tanıtırken sonraki bir temel sınıf değişikliğine karşı koruma sağlar | Aynı çağrı dizisi1 ile bir yordamın veya özelliğin farklı bir uygulamasını tanımlayarak polimorfizme ulaşır |
Yeniden tanımlı öğe | Bildirilen herhangi bir öğe türü | Yalnızca bir yordam (Function , Sub , veya ) veya Operator özelliği |
Öğeyi yeniden tanımlama | Bildirilen herhangi bir öğe türü | Yalnızca aynı çağrı dizisi1'e sahip bir yordam veya özellik |
Öğeyi yeniden tanımlama erişim düzeyi | Herhangi bir erişim düzeyi | Geçersiz kılınan öğenin erişim düzeyi değiştirilemiyor |
Öğe yeniden tanımlanabilirliği ve yazılabilirliği | Herhangi bir bileşim | Geçersiz kılınan özelliğin okunabilirliği veya yazılabilirliği değiştirilemiyor |
Yeniden tanımlama denetimi | Temel sınıf öğesi gölgelendirmeyi zorlayamaz veya yasaklayamaz | Temel sınıf öğesi , NotOverridable veya belirtebilir MustOverride Overridable |
Anahtar sözcük kullanımı | Shadows türetilmiş sınıfta önerilir; Shadows 2 belirtilmemişse Shadows kabul Overrides edilir |
Overridable veya MustOverride temel sınıfta gerekli; Overrides türetilmiş sınıfta gereklidir |
Türetilmiş sınıfınızdan türetilen sınıflara göre yeniden tanımlama öğesini devralma | Daha fazla türetilmiş sınıflar tarafından devralınan gölge öğesi; gölgeli öğe hala gizli3 | Daha fazla türetilmiş sınıflar tarafından devralınan öğe geçersiz kılınıyor; geçersiz kılınan öğe hala geçersiz kılınmış |
1Çağrı sırası öğe türünden (Function
, Sub
, Operator
veya Property
), ad, parametre listesi ve dönüş türünden oluşur. Bir yordamı bir özellik veya başka bir yolla geçersiz kılamazsınız. Bir yordam türünü (Function
, Sub
veya Operator
) başka bir türle geçersiz kılamazsınız.
2 veya Overrides
belirtmezsenizShadows
, derleyici hangi tür yeniden tanımlama kullanmak istediğinizden emin olmanıza yardımcı olmak için bir uyarı iletisi görüntüler. Uyarıyı yoksayarsanız, gölgeleme mekanizması kullanılır.
3 Gölgelendirme öğesine daha fazla türetilmiş bir sınıfta erişilemiyorsa, gölgelendirme devralınmaz. Örneğin, gölgelendirme öğesini olarak Private
bildirirseniz, türetilmiş sınıfınızdan türetilen bir sınıf, gölge öğesi yerine özgün öğeyi devralır.
Yönergeler
Normalde aşağıdaki durumlarda geçersiz kılma kullanırsınız:
Çok biçimli türetilmiş sınıflar tanımlarsınız.
Derleyicinin aynı öğe türünü ve çağrı dizisini zorlamasını sağlamak istiyorsunuz.
Normalde aşağıdaki durumlarda gölgelendirme kullanırsınız:
Temel sınıfınızın değiştirilebileceğini ve sizinkiyle aynı adı kullanarak bir öğe tanımlayabileceğini tahmin edebilirsiniz.
Öğe türünü değiştirme veya sırayı çağırma özgürlüğü istiyorsunuz.