MustInherit (Visual Basic)
Určuje třídu lze pouze jako základní třída a objekt nelze vytvořit z něj.
Poznámky
Účel základní třídy (také známé jako abstraktní třída) je definování funkcí, které jsou společné pro všechny třídy odvozené od něj.Tím ušetří odvozené třídy s předefinovat společné prvky.V některých případech společné funkce není dostatečně úplné použitelné objekt a každá odvozená třída definuje chybějící funkce.V takovém případě má náročné kód vytvořit objekty pouze z odvozených tříd.Pomocí MustInherit na základní třídy to vynutit.
Jiné použití MustInherit třída je proměnná omezit sadu souvisejících tříd.Můžete definovat základní třídy a z něj odvodit těchto souvisejících tříd.Základní třída není nutné poskytnout žádné funkce, které jsou společné pro všechny odvozené třídy, ale může sloužit jako filtr pro přiřazení hodnoty proměnné.Pokud náročné kód deklaruje proměnnou jako základní třída, Visual Basic umožňuje přiřadit pouze objekt některé z odvozených tříd této proměnné.
Na.NET Framework definuje několik MustInherit tříd, mezi nimi Array, Enum, a ValueType.ValueTypeje příkladem základní třídy, která omezuje proměnné.Všechny typy hodnoty se odvozují z ValueType.Pokud deklarujete proměnnou jako ValueType, můžete přiřadit pouze typy hodnota této proměnné.
Pravidla
Prohlášení kontextu. Můžete použít MustInherit pouze Class prohlášení.
Kombinovanými modifikátory. Nelze zadat MustInherit spolu s NotInheritable ve stejné deklaraci.
Příklad
Následující příklad ukazuje vynucené dědičnosti a Vynucené přepsání.Základní třída shape definuje proměnné acrossLine.Třídy circle a square odvodit z shape.Dědí definici acrossLine, ale funkci musí definovat area protože tento výpočet je pro každý druh obrazce liší.
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 typu shape.Však nelze vytvořit objekt shape protože postrádá funkcí funkce area a je označen MustInherit.
Protož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 tyto proměnné přiřadit jiný objekt, který nabízí vysokou úroveň bezpečnosti typu.
Použití
MustInherit Modifikátor lze v této souvislosti:
Viz také
Referenční dokumentace
Koncepty
Základy dědičnosti (Visual Basic)