Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een afgeleide klasse neemt alle definities van de basisklasse over. Als u een variabele wilt definiëren met dezelfde naam als een element van de basisklasse, kunt u dat basisklasse-element verbergen of schaduwen wanneer u de variabele in de afgeleide klasse definieert. Als u dit doet, heeft code in de afgeleide klasse toegang tot uw variabele, tenzij deze het schaduwmechanisme expliciet omzeilt.
Een andere reden waarom u een overgenomen variabele wilt verbergen, is om te beschermen tegen revisie van basisklassen. De basisklasse kan een wijziging ondergaan die het element wijzigt dat u overneemt. Als dit gebeurt, dwingt de Shadows wijzigingsfunctie verwijzingen van de afgeleide klasse om te worden omgezet in uw variabele, in plaats van naar het basisklasse-element.
Een overgenomen variabele verbergen
Zorg ervoor dat de variabele die u wilt verbergen, is gedeclareerd op klasseniveau (buiten elke procedure). Anders hoeft u deze niet te verbergen.
Schrijf in uw afgeleide klasse een Dim-instructie om uw variabele te declareren. Gebruik dezelfde naam als die van de overgenomen variabele.
Neem het trefwoord Schaduwen op in de declaratie.
Wanneer code in de afgeleide klasse verwijst naar de naam van de variabele, wordt de verwijzing naar uw variabele omgezet door de compiler.
In het volgende voorbeeld ziet u schaduw van een overgenomen variabele:
Public Class ShadowBaseClass Public shadowString As String = "This is the base class string." End Class Public Class ShadowDerivedClass Inherits ShadowBaseClass Public Shadows shadowString As String = "This is the derived class string." Public Sub ShowStrings() Dim s As String = $"Unqualified shadowString: {shadowString}{vbCrLf}MyBase.shadowString: {MyBase.shadowString}" MsgBox(s) End Sub End ClassHet voorgaande voorbeeld declareert de variabele
shadowStringin de basisklasse en schaduwt deze in de afgeleide klasse. De procedureShowStringsin de afgeleide klasse geeft de schaduwversie van de tekenreeks weer wanneer de naamshadowStringniet is gekwalificeerd. Vervolgens wordt de schaduwversie weergegeven wanneershadowStringwordt gekwalificeerd met hetMyBasetrefwoord.
Robuuste programmering
Schaduwen introduceert meer dan één versie van een variabele met dezelfde naam. Wanneer een code-instructie verwijst naar de naam van de variabele, is de versie waarnaar de compiler de verwijzing oplost afhankelijk van factoren zoals de locatie van de code-instructie en de aanwezigheid van een in aanmerking komende tekenreeks. Dit kan het risico verhogen dat wordt verwezen naar een onbedoelde versie van een schaduwvariabele. U kunt dit risico verminderen door alle verwijzingen naar een schaduwvariabele volledig te kwalificeren.
Zie ook
- Verwijzingen naar gedeclareerde elementen
- Schaduw in Visual Basic
- Verschillen tussen schaduw en overschrijven
- Procedure: Een variabele verbergen met dezelfde naam als uw variabele
- Procedure: toegang krijgen tot een variabele die is verborgen door een afgeleide klasse
- Overschrijvingen
- Ik, My, MyBase en MyClass
- Basisprincipes van overname