MustInherit (Visual Basic)
Bir sınıfın yalnızca temel sınıf olarak kullanılabileceğini ve doğrudan ondan nesne oluşturamayacağınızı belirtir.
Açıklamalar
Temel sınıfın (soyut sınıf olarak da bilinir) amacı, ondan türetilen tüm sınıflar için ortak olan işlevleri tanımlamaktır. Bu, türetilmiş sınıfları ortak öğeleri yeniden tanımlamak zorunda kalmadan kaydeder. Bazı durumlarda, bu ortak işlevsellik kullanılabilir bir nesne yapmak için yeterli tamamlanmaz ve türetilmiş her sınıf eksik işlevselliği tanımlar. Böyle bir durumda, tüketen kodun yalnızca türetilmiş sınıflardan nesne oluşturmasını istersiniz. Bunu zorunlu kılmak için temel sınıfta kullanırsınız MustInherit
.
Bir sınıfın başka bir MustInherit
kullanımı, bir değişkeni bir dizi ilgili sınıfla kısıtlamaktır. Bir temel sınıf tanımlayabilir ve tüm bu ilgili sınıfları ondan türetebilirsiniz. Temel sınıfın türetilmiş tüm sınıflar için ortak herhangi bir işlev sağlaması gerekmez, ancak değişkenlere değer atamak için bir filtre işlevi görebilir. Tüketen kodunuz bir değişkeni temel sınıf olarak bildirirse, Visual Basic türetilmiş sınıflardan yalnızca birinden bu değişkene bir nesne atamanıza olanak tanır.
.NET Framework, aralarında Array, Enumve ValueTypegibi çeşitli MustInherit
sınıfları tanımlar. ValueType , bir değişkeni kısıtlayan bir temel sınıf örneğidir. Tüm değer türleri türünden ValueTypetüretilir. Bir değişkeni olarak ValueTypebildirirseniz, bu değişkene yalnızca değer türleri atayabilirsiniz.
Kurallar
Bildirim Bağlamı. Yalnızca deyiminde
Class
kullanabilirsinizMustInherit
.Birleşik Değiştiriciler. Aynı bildirimde ile
NotInheritable
birlikte belirtemezsinizMustInherit
.
Örnek
Aşağıdaki örnekte hem zorlamalı devralma hem de zorlamalı geçersiz kılma gösterilmektedir. Temel sınıf shape
bir değişken acrossLine
tanımlar. sınıfları circle
ve square
türetilir shape
. bu hesaplama her şekil türü için farklı olduğundan, tanımını acrossLine
devralırlar, ancak işlevi area
tanımlamaları gerekir.
Public MustInherit Class shape
Public acrossLine As Double
Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
Public Overrides Function area() As Double
Return Math.PI * acrossLine
End Function
End Class
Public Class square : Inherits shape
Public Overrides Function area() As Double
Return acrossLine * acrossLine
End Function
End Class
Public Class consumeShapes
Public Sub makeShapes()
Dim shape1, shape2 As shape
shape1 = New circle
shape2 = New square
End Sub
End Class
ve shape2
türünü shape
bildirebilirsinizshape1
. Ancak, işlevinin shape
area
işlevselliğinden yoksun olduğundan ve olarak işaretlendiğinden MustInherit
nesnesi oluşturamazsınız.
olarak shape
bildirildiğinden, değişkenleri shape1
ve shape2
türetilmiş sınıflardan circle
ve square
nesnelerle sınırlıdır. Visual Basic, bu değişkenlere başka bir nesne atamanıza izin vermez ve bu da size yüksek tür güvenliği sağlar.
Kullanım
Değiştirici MustInherit
bu bağlamda kullanılabilir: