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 MustInherit pouze v Class příkazu.

  • Kombinované modifikátory. Nelze zadat MustInherit společně s NotInheritable ve 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:

Class – příkaz

Viz také