Aracılığıyla paylaş


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 acrossLinetanımlar. sınıfları circle ve square türetilir shape. bu hesaplama her şekil türü için farklı olduğundan, tanımını acrossLinedevralı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ü shapebildirebilirsinizshape1. Ancak, işlevinin shapearea işlevselliğinden yoksun olduğundan ve olarak işaretlendiğinden MustInheritnesnesi oluşturamazsınız.

olarak shapebildirildiğinden, değişkenleri shape1 ve shape2 türetilmiş sınıflardan circle ve squarenesnelerle 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:

Class Deyimi

Ayrıca bkz.