Sdílet prostřednictvím


MustInherit (Visual Basic)

Určuje, že třídu lze použít pouze jako základní třídu a že z ní nelze vytvořit objekt přímo.

Poznámky

Účelem základní třídy (označované také jako abstraktní třída) je definovat funkce, které jsou společné pro všechny třídy odvozené z ní. Tím se uloží odvozené třídy, aby bylo nutné předefinovat společné prvky. V některých případech tato běžná funkce nestačí k vytvoření použitelného objektu a každá odvozená třída definuje chybějící funkce. V takovém případě chcete, aby spotřeba kódu vytvářela objekty pouze z odvozených tříd. K vynucování použijete MustInherit základní třídu.

Dalším použitím MustInherit třídy je omezení proměnné na sadu souvisejících tříd. Můžete definovat základní třídu a odvodit z ní všechny tyto související třídy. Základní třída nemusí poskytovat žádné funkce společné pro všechny odvozené třídy, ale může sloužit jako filtr pro přiřazování hodnot proměnným. Pokud váš kód využívající deklaruje proměnnou jako základní třídu, Visual Basic umožňuje přiřadit pouze objekt z jedné z odvozených tříd této proměnné.

Rozhraní .NET Framework definuje několik MustInherit tříd, mezi nimi Array, Enuma ValueType. ValueType je příkladem základní třídy, která omezuje proměnnou. Všechny typy hodnot jsou odvozeny od ValueType. Pokud deklarujete proměnnou jako ValueType, můžete této proměnné přiřadit pouze typy hodnot.

Pravidla

  • Kontext deklarace Můžete použít MustInherit pouze v Class příkazu.

  • Kombinované modifikátory. Nelze zadat MustInherit společně se NotInheritable stejnou deklarací.

Příklad

Následující příklad znázorňuje vynucenou dědičnost i vynucené přepsání. Základní třída shape definuje proměnnou acrossLine. circle Třídy a square odvozené od shape. Dědí definici acrossLine, ale musí definovat funkci area , protože tento výpočet se liší pro každý druh obrazce.

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

Můžete deklarovat shape1 a shape2 být typu shape. Objekt však nelze vytvořit, shape protože nemá funkce funkce funkce area a je označen MustInherit.

Vzhledem k tomu, že jsou deklarovány jako shape, proměnné shape1 a shape2 jsou omezeny na objekty z odvozených tříd circle a square. Visual Basic neumožňuje přiřadit k těmto proměnným žádný jiný objekt, což vám dává vysokou úroveň bezpečnosti typů.

Využití

MustInherit Modifikátor lze použít v tomto kontextu:

Příkaz Class

Viz také