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 vClass
příkazu.Kombinované modifikátory. Nelze zadat
MustInherit
společně seNotInheritable
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: