Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

Wat Is Overerving in C#?

Overerving is een hoeksteen van C# objectgeoriënteerd ontwerp. Het laat een kindclass automatisch de velden en methodes van een ouderkass ontvangen, terwijl het kind nog steeds die gedrag kan overschrijven of uitbreiden. Dit bevordert herbruik van code, vereenvoudigt onderhoud en vestigt een duidelijke hiërarchie.

  • Definieert ouder- en kindclasses.
  • Kind overerven ouderleden.
  • Kind kan overgeërfd gedrag wijzigen.
  • Kind kan eigen leden toevoegen.

C# Overervingsvoorbeeld

Hieronder is een stapsgewijze demonstratie die laat zien hoe overerving te implementeren en protected leden te gebruiken.

Stap 1 – De Basisklass Wijzigen

Open Tutorial.cs en verander de Tutorial-class zodat de sleutelvelden protected zijn:

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

Het gebruik van protected zorgt ervoor dat alleen afgeleide classes direct toegang hebben tot deze velden.

Stap 2 – Een Afgeleide Class Maken

Voeg de volgende code toe aan Tutorial.cs na de basisklassdefinitie:

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

Uitleg:

  1. Declareer Guru99Tutorial als kind van Tutorial met de dubbele punt (:) syntaxis.
  2. Voeg een methode RenameTutorial toe die een nieuwe waarde toewijst aan TutorialName.
  3. Omdat TutorialName protected is, kan Guru99Tutorial er toegang tot krijgen zelfs als het niet expliciet daar gedeclareerd is.

Stap 3 – De Afgeleide Class Gebruiken in Program.cs

Vervang de inhoud van Program.cs met het volgende:

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

using System;
namespace DemoApplication {
    public 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();
        }
    }
}

Uitleg:

  1. Het programma instantieert Guru99Tutorial, niet de basisklass Tutorial.
  2. Het roept RenameTutorial aan om de titel te wijzigen.
  3. Hoewel GetTutorial gedefinieerd is in de basisklass, kan de afgeleide instantie het direct aanroepen.

Het draaien van deze code print:

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

Wat Is Polymorfisme in C#?

Polymorfisme laat een enkele interface verschillende onderliggende vormen vertegenwoordigen. In C# manifesteert dit zich vaak als methode-overloading of overriding, waardoor dezelfde methodenaam varieerde taken kan uitvoeren gebaseerd op parameters of context.

C# Polymorfisme Voorbeeld

We demonstreren methode-overloading binnen dezelfde class.

Stap 1 – De Basisklass Updaten

Wijzig Tutorial.cs zoals getoond:

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

Belangrijkste wijzigingen:

  1. De SetTutorial-methode heeft nu twee overloads – één die een int en string accepteert, en een andere die alleen een string accepteert.
  2. Beide overloads wijzen waarden toe aan de corresponderende velden.

Stap 2 – Testen in Program.cs

Vervang Program.cs met de volgende code:

using System;
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();
        }
    }
}

Uitleg:

  1. Eerste aanroep geeft zowel id als name door aan de twee-parameter overload.
  2. Tweede aanroep geeft alleen name door, wat de single-parameter overload aanroept.

De console toont:

C# Inheritance & Polymorfisme Beheersen: Praktische Codevoorbeelden

Geavanceerde scenario's kun je een GetTutorialID-methode toevoegen om de ID apart op te halen.

Samenvatting

  • Overerving laat een kindclass ouderleden overerven en uitbreiden.
  • Polymorfisme, vooral methode-overloading, laat één methodenaam aanpassen aan verschillende parameter-sets.
  • Beide concepten zijn essentieel voor schone, onderhoudbare en herbruikbare C#-code.

C Taal

  1. C# Expressies, Statements & Blokken: Uitgebreide Gids met Praktische Voorbeelden
  2. C# Classes & Objects: Fundamenten voor Robuuste OOP
  3. C# Abstract Classes & Methods: Een Praktische Gids
  4. C# Partial Classes en Methods: Een Praktische Gids
  5. C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
  6. C++ Functies Uitgelegd met Praktische Codevoorbeelden
  7. C++ Struct vs Class: Belangrijkste Verschillen, Syntaxis en Beste Gebruikssituaties
  8. While vs. Do-While lussen: Duidelijke vergelijking met praktische voorbeelden
  9. C# Programma Structuur: Kerncomponenten & Hello World Voorbeeld
  10. C# Erfelijkheid Beheersen: Herbruikbare, Onderhoudbare Code Bouwen
  11. type() en isinstance() in Python begrijpen: praktische voorbeelden