MustInherit (Visual Basic)
Určuje, že třídu lze použít pouze jako základní třídu a že přímo z ní nelze vytvořit objekt.
Poznámky
Účelem základní třídy (označované také jako abstraktní třída) je definování funkcionality, která je společná pro všechny třídy odvozené od ní. Tím se uloží odvozené třídy, abyste museli předefinovat společné prvky. V některých případech není tato společná funkce dostatečně dokončena, aby provedla použitelný objekt a každá odvozená třída definuje chybějící funkce. V takovém případě chcete, aby kód vytvářel objekty pouze z odvozených tříd. Použijete MustInherit na základní třídě k vykonání této zásady.
Dalším použitím MustInherit třídy je omezit proměnnou 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řazení hodnot proměnným. pokud váš nenáročný kód deklaruje proměnnou jako základní třídu, Visual Basic umožňuje přiřadit pouze objekt z jedné z odvozených tříd do této proměnné.
.NET Framework definuje několik MustInherit tříd, mezi nimi, Array Enum a ValueType . ValueType je příklad základní třídy, která omezuje proměnnou. Všechny typy hodnot jsou odvozeny z ValueType . Pokud deklarujete proměnnou jako ValueType , můžete k této proměnné přiřadit pouze typy hodnot.
Pravidla
Kontext deklarace Můžete použít
MustInheritpouze vClasspříkazu.Kombinované modifikátory. Nelze zadat
MustInheritspolečně sNotInheritableve stejné deklaraci.
Příklad
Následující příklad znázorňuje vynucenou dědičnost a vynucené přepsání. Základní třída shape definuje proměnnou acrossLine . Třídy circle a square odvozují z 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 . Nemůžete však vytvořit objekt z, shape protože nemá funkci 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 žádné další objekty k těmto proměnným, což poskytuje vysokou úroveň bezpečnosti typů.
Využití
MustInheritV tomto kontextu lze použít modifikátor: