MustInherit (Visual Basic)
Megadja, hogy egy osztály csak alaposztályként használható, és hogy közvetlenül nem hozhat létre objektumot belőle.
Megjegyzések
Az alaposztály (más néven absztrakt osztály) célja olyan funkciók meghatározása, amelyek az abból származtatott összes osztályra jellemzőek. Így a származtatott osztályok nem lesznek újradefiniáltak a közös elemek között. Bizonyos esetekben ez a gyakori funkció nem elég teljes egy használható objektum létrehozásához, és minden származtatott osztály meghatározza a hiányzó funkciókat. Ilyen esetben azt szeretné, hogy a fogyasztó kód csak a származtatott osztályokból hozzon létre objektumokat. Ezt az alaposztályon kell MustInherit
érvényesíteni.
Az osztály másik MustInherit
használata, ha egy változót egy kapcsolódó osztályra korlátoz. Meghatározhat egy alaposztályt, és az összes kapcsolódó osztályt levezetheti belőle. Az alaposztálynak nem kell minden származtatott osztályhoz közös funkciót biztosítania, de szűrőként szolgálhat az értékek változókhoz való hozzárendeléséhez. Ha a fogyasztó kód egy változót deklarál alaposztályként, a Visual Basic lehetővé teszi, hogy csak egy objektumot rendeljen hozzá az egyik származtatott osztályból a változóhoz.
A .NET-keretrendszer több MustInherit
osztályt határoz meg, köztük Array, Enumés ValueType. ValueType Egy példa egy változót korlátozó alaposztályra. Minden értéktípus a forrásból ValueTypeszármazik. Ha egy változót deklarál, ValueTypecsak értéktípusokat rendelhet hozzá.
Szabályok
Deklarációs környezet. Csak utasításban
Class
használhatóMustInherit
.Kombinált módosítók. Ugyanabban a deklarációban nem adható meg
MustInherit
együttNotInheritable
.
Példa
Az alábbi példa a kényszerített öröklést és a kényszerített felülírást is szemlélteti. Az alaposztály shape
definiál egy változót acrossLine
. Az osztályokcircle
, és square
származik .shape
Öröklik a definíciót acrossLine
, de meg kell határozniuk a függvényt area
, mert ez a számítás különböző az egyes alakzatok esetében.
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
Deklarálhatja a deklarált shape1
és shape2
a típust shape
. Azonban nem hozhat létre objektumot shape
, mert nem rendelkezik a függvény area
funkcióval, és a jelölése meg van jelölve MustInherit
.
Mivel ezek deklarálva shape
vannak, a változók shape1
, és shape2
a származtatott osztályok circle
és square
a . A Visual Basic nem teszi lehetővé, hogy más objektumokat rendeljen ezekhez a változókhoz, ami magas szintű biztonságot nyújt.
Használat
A MustInherit
módosító ebben a környezetben használható: