C # Overerving & Polymorfisme met voorbeelden

Inhoudsopgave:

Anonim

In deze tutorial leer je-

  • Erfenis
  • Polymorfisme

Wat is overerving in C #?

Overerving is een belangrijk concept in C #. Overerving is een concept waarin u bovenliggende klassen en onderliggende klassen definieert.

De onderliggende klassen erven methoden en eigenschappen van de bovenliggende klasse, maar kunnen tegelijkertijd ook het gedrag van de methoden wijzigen, indien nodig. De onderliggende klasse kan indien nodig ook eigen methoden definiëren.

U krijgt een beter begrip als we deze actie zien.

Laten we nu kijken hoe we het concept van overerving in onze code kunnen opnemen.

Stap 1) De eerste stap is om de code voor onze Tutorial-klasse te wijzigen. In deze stap voegen we de onderstaande code toe aan het Tutorial.cs-bestand.

Merk op dat we nu de toegangsmodificator 'protected' moeten toevoegen aan zowel het TutorialID als TutorialName-veld.

Onthoud dat we deze toegangsmodificator hadden genoemd in de zelfstudie Toegangsmodificator. Welnu, hier kun je het doel zien om dit te hebben. Alleen als u deze toegangsmodificator (beveiligd) heeft, kan de kindklasse de velden van de bovenliggende klasse gebruiken.

Stap 2) De tweede stap is om onze nieuwe kinderklasse toe te voegen. De naam van deze klas zal "Guru99Tutorial" zijn. In deze stap voegen we de onderstaande code toe aan het Tutorial.cs-bestand. De code moet achter de klassendefinitie van Tutorial worden geplaatst.

Code Verklaring: -

  1. De eerste stap is het maken van de Guru99Tutorial-kinderklasse. We moeten ook vermelden dat deze klas een kinderklas van de Tutorial-klas wordt. Dit wordt gedaan door het ':' trefwoord.
  2. Vervolgens definiëren we een methode genaamd RenameTutorial. Het zal worden gebruikt om het veld TutorialName te hernoemen. Deze methode accepteert een stringvariabele die de nieuwe naam van de zelfstudie bevat.
  3. Vervolgens hebben we de parameter pNewName toegewezen aan het veld TutorialName.

    Opmerking : - Hoewel we het veld TutorialName niet hebben gedefinieerd in de klasse "Guru99Tutorial", hebben we nog steeds toegang tot dit veld. Dit komt door het feit dat "Guru99Tutorial" een onderliggende klasse van de Tutorial-klasse is. En omdat we de velden van de Tutorial-klasse als beschermd hebben gemaakt, zijn ze toegankelijk voor deze klasse.

Stap 3) De laatste stap is het wijzigen van ons hoofdbestand Program.cs. In onze consoletoepassing gaan we een object maken van de klasse Guru99Tutorial. Met dit object gaan we de RenameTutorial-methode aanroepen. We gaan dan het veld TutorialName weergeven met behulp van de GetTutorial-methode.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{protected int TutorialID;protected string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public String GetTutorial(){return TutorialName;}}public class Guru99Tutorial:Tutorial{public void RenameTutorial(String pNewName){TutorialName=pNewName;}static void Main(string[] args){Guru99Tutorial pTutor=new Guru99Tutorial();pTutor.RenameTutorial(".Net by Guru99");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}

Code Verklaring: -

  1. De eerste stap is het maken van een object voor de klasse Guru99Tutorial. Dit doet u via het trefwoord 'nieuw'. Merk op dat we deze keer geen object van de klasse Tutorial maken.
  2. We gebruiken de RenameTutorial-methode van de klasse Guru99Tutorial om het veld TutorialName te wijzigen. We geven de string ".Net by Guru99" door aan de RenameTutorial methode.
  3. We noemen dan de GetTutorial-methode. Merk op dat hoewel deze methode niet is gedefinieerd in de klasse Guru99Tutorial, we nog steeds toegang hebben tot deze methode. De uitvoer van de GetTutorial-methode wordt vervolgens weergegeven op de console via de Console.WriteLine-methode.

Als de bovenstaande code correct is ingevoerd en het programma met succes is uitgevoerd, wordt de volgende uitvoer weergegeven.

Uitgang:

Aan de output kunnen we duidelijk zien dat het veld TutorialName is hernoemd naar ".Net by Guru99". Dit werd mogelijk gemaakt door de RenameTutorial-methode, aangeroepen door de kindklasse.

Wat is polymorfisme in C #?

Polymorfisme is een OOP-concept waarbij één naam vele vormen kan hebben.

Je hebt bijvoorbeeld een smartphone voor communicatie. De communicatiemodus die u kiest, kan van alles zijn. Het kan een telefoontje zijn, een sms-bericht, een mms-bericht, e-mail, enz. Het doel is dus normaal, namelijk communicatie, maar hun aanpak is anders. Dit heet polymorfisme.

U krijgt een beter begrip als we deze actie zien.

Laten we nu eens kijken hoe we het concept van polymorfisme in onze code kunnen opnemen.

Stap 1) De eerste stap is om de code voor onze Tutorial-klasse te wijzigen. In deze stap voegen we de onderstaande code toe aan het Tutorial.cs-bestand.

Code Verklaring: -

1 & 2) De eerste stap is dezelfde als in onze eerdere voorbeelden. We houden de definitie van de SetTutorial-methode zoals die is.

3) Deze methode stelt de TutorialID en de TutorialName in op basis van de parameters pID en pName.

4) Dit is waar we een wijziging aanbrengen in onze klasse waarin we een nieuwe methode toevoegen met dezelfde naam SetTutorial. Alleen deze keer geven we slechts één parameter door, namelijk de pName. Bij deze methode stellen we alleen het veld van TutorialName in op pName.

Stap 2) De laatste stap is het wijzigen van ons hoofdbestand Program.cs. In onze consoletoepassing gaan we een object maken van de klasse Guru99Tutorial.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{public int TutorialID;public string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public void SetTutorial(string pName){TutorialName=pName;}public String GetTutorial(){return TutorialName;}static void Main(string[] args){Tutorial pTutor=new Tutorial();pTutor.SetTutorial(1,"First Tutorial");Console.WriteLine(pTutor.GetTutorial());pTutor.SetTutorial("Second Tutorial");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}

Code Verklaring: -

  1. In de eerste stap gebruiken we de SetTutorial-methode met 2 parameters. Waar we zowel de TutorialID als TutorialName aan deze methode doorgeven.
  2. In de tweede stap roepen we nu de SetTutorial-methode aan met slechts één parameter. We geven alleen de TutorialName door aan deze methode.

Als de bovenstaande code correct is ingevoerd en het programma wordt uitgevoerd, wordt de volgende uitvoer weergegeven. Als u ook de zelfstudie-ID samen met de lesnaam wilt ophalen, moet u de onderstaande stap volgen

  1. Maak een aparte methode met de naam public int GetTutorialID
  2. Schrijf in die methode de coderegel "return TutorialID." Dit kan worden gebruikt om de TutorialID terug te sturen naar het aanroepende programma.

Uitgang:

Aan de output kunnen we duidelijk zien dat beide methoden met succes werden aangeroepen. Hierdoor werden de strings "First Tutorial" en "Second Tutorial" naar de console gestuurd.

Overzicht

  • Overerving is waar een onderliggende klasse de velden en methoden van de bovenliggende klasse erft. De kindklasse kan dan ook zijn eigen methoden definiëren.
  • Polymorfisme is een OOP-concept waarbij één naam vele vormen kan hebben.