Introductie over methode negeren in C #
Opheffen in eenvoudige term betekent het vermogen om het gedrag van methoden te wijzigen. We kennen allemaal de virtuele functie in C ++, waarin we de functie aanroepen vanuit de basisklasse in de afgeleide klasse. Methode overschrijven in C # biedt een vergelijkbaar privilege als de virtuele functie in C ++. Om een voorbeeld van de vogels te nemen, alle vogels hebben hetzelfde kenmerk als vlieg, kleur, enz. Maar verschillende vogels zullen een andere manier van vliegen hebben en de kleur zal van vogel tot vogel variëren. Dus we kunnen de Bird-basisklasse-methoden in afgeleide klassen zoals een papegaai, mus, kraai, etc. overschrijven
Hoe overschrijven in C # gebruiken?
Stel dat onze toepassing de vereiste heeft om het gedrag van de basisklasse-methode in een afgeleide klasse te wijzigen, dan moeten we kiezen voor een methode met voorrang. Om dit te bereiken, moeten we de methode in de afgeleide klasse met dezelfde handtekening in de basisklasse maken om een andere taak uit te voeren. Voordat we leren hoe we de overheersende techniek kunnen gebruiken, moeten we rekening houden met de onderstaande punten.
- In C # -programmering wordt de methode-overriden ook runtime polymorfisme, late binding of dynamisch polymorfisme genoemd.
- Alleen in de afgeleide klassen is overschrijven mogelijk. Omdat een methode wordt overschreven in de afgeleide klasse van de basisklasse.
- De methode moet een niet-virtuele of statische methode voor een opheffing zijn.
- Toegangsniveau modifier van zowel de override-methode als de virtuele methode moet hetzelfde zijn.
De methode die wordt overschreven door de overschrijvingsdeclaratie, wordt de overschreven basismethode genoemd. Dit zal aanwezig zijn in de basisklasse. De overschreven basismethode kan abstract, overschrijven of virtueel zijn. Nieuwe implementatie genaamd, override methode is overgenomen van deze basisklasse.
We gebruiken verschillende sleutelwoorden voor het negeren van methoden. Zij zijn,
1) Virtueel trefwoord
Als de compiler het virtuele trefwoord in het programma tegenkomt, begrijpt hij dat deze methode kan worden vervangen door een van de afgeleide klassen. De structuur is zoals hieronder.
public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)
2) Trefwoord overschrijven
Dit is aanwezig in de afgeleide klasse. Het vertelt de compiler dat deze methode de methode met dezelfde naam en handtekening in de basisklasse overschrijft.
public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)
Voorbeeld
Laten we eerst het voorbeeld bekijken zonder het sleutelwoord Virtueel en negeren te gebruiken.
Code:
class Birds
(
public void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
class Parrot:Birds
(
public void Color( )
(
Console.WriteLine("Parrot is Green");
)
)
class ExecutionClass
(
public static void Main( )
(
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
)
)
Output:
In het bovenstaande voorbeeld hebben we een object van de klasse Afgeleide Parrot gemaakt en de referentie ervan opgeslagen in het referentievariabele object van het type Birds.
In de volgende stap roepen we de functie Kleur () aan met behulp van het referentievariabeleobject. Aangezien object een verwijzing naar een object van het type Parrot bevat, is het normaal dat we verwachten dat de functie Color () van klasse Parrot wordt uitgevoerd. Maar we hebben het mis. De schoonheid van de programmering laat het niet gebeuren.
Tot onze verrassing is de uitgevoerde methode Color () van de klasse Birds. Dat komt omdat de functie wordt aangeroepen op basis van het type verwijzing en niet naar waarnaar het object met de referentievariabele verwijst. Omdat object een referentie is van het type Birds, wordt de functie Color () van de klasse Birds aangeroepen, ongeacht naar wie het object verwijst.
Laten we nu hetzelfde programma herschrijven met virtueel en negeren. Deze keer gaan we stap voor stap voor een beter begrip.
Maak een basisklasse met een willekeurige naam. Hier gebruik ik Birds. Schrijf een methode met het virtuele trefwoord. Dit wordt onze overschreven methode die we in de overgenomen klasse zullen overschrijven. Schrijf in de methode een bericht om in de console af te drukken.
class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
Creëer nu nog een klasse Parrot. Deze keer zullen we het erven van de basisklasse die we eerder hebben gemaakt, namelijk Birds. Om te erven gebruiken we het ':' symbool.
klasse Papegaai: Vogels
Hier schrijf een functie met opheffen trefwoord en schrijf een bericht. Zorg ervoor dat de methode naam en handtekening in de afgeleide klasse overeenkomen met de methode naam en handtekening in de basisklasse.
public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)
We hebben nog een klasse nodig om de functionaliteit uit te voeren om het overschrijven te controleren. Maak een klas met een willekeurige naam. Daarbinnen schrijft de hoofdfunctie.
class ExecutionClass
(
public static void Main( )
(
)
)
Maak een object van de bovenliggende klasse en activeer de functie met behulp van het object van de klasse. Dit roept de kleurmethode op die aanwezig is in de klasse Birds.
Birds object;
object = new Birds( );
object .Color( );
Maak nu het object van de afgeleide klasse en roep de methode Kleur aan. Dit roept de kleurmethode van de klasse Parrot op.
object = new Parrot( );
object.Color( );
Kun je de uitvoer raden als we het programma uitvoeren? Dit is zoals hieronder getoond.
Output:
De sleutelwoorden overschrijven en virtueel maken het mogelijk om de basisklasse en afgeleide klassenmethoden op elk moment afzonderlijk aan te roepen, zelfs als de methodenamen en handtekeningen hetzelfde zijn.
Conclusie
In dit artikel hebben we de methode override begrepen, de noodzaak van de methode overriding, real-world voorbeeld van het overridingprincipe, de manier om dit te bereiken, de noodzaak van het gebruik van de virtuele en override keywords en het voorbeeld van overriding met behulp van de code. We kunnen concluderen dat opheffen een van de nuttige kenmerken is in polymorfisme waarmee we het gedrag van de basismethode-methode in de afgeleide klasse kunnen veranderen.
Aanbevolen artikelen
Dit is een gids voor Methode opheffen in C #. Hier bespreken we de introductie, het gebruik van dwingende en verschillende trefwoorden voor methode negeren, samen met voorbeelden en stappen. U kunt ook de volgende artikelen bekijken voor meer informatie -
- C # Functies
- C # Commando's
- Wat is multithreading in C #?
- C # String Functies
- Gids voor opheffen in C ++
- Overschrijven in Java
- Multithreading in C # met methoden