Dziedziczenie w C # & Polimorfizm z przykładami

Spisie treści:

Anonim

W tym samouczku nauczysz się:

  • Dziedzictwo
  • Wielopostaciowość

Co to jest dziedziczenie w C #?

Dziedziczenie to ważna koncepcja w języku C #. Dziedziczenie to koncepcja, w której definiuje się klasy nadrzędne i podrzędne.

Klasy potomne dziedziczą metody i właściwości klasy nadrzędnej, ale jednocześnie mogą również modyfikować zachowanie metod, jeśli jest to wymagane. W razie potrzeby klasa potomna może również definiować własne metody.

Lepiej zrozumiesz, jeśli zobaczysz tę akcję.

Zobaczmy teraz, jak możemy włączyć koncepcję dziedziczenia do naszego kodu.

Krok 1) Pierwszym krokiem jest zmiana kodu naszej klasy Tutorial. W tym kroku dodajemy poniższy kod do pliku Tutorial.cs.

Zauważ, że musimy teraz dodać modyfikator dostępu „protected” zarówno do pola TutorialID, jak i TutorialName.

Pamiętaj, że wspomnieliśmy o tym modyfikatorze dostępu w samouczku dotyczącym modyfikatora dostępu. Cóż, tutaj możesz zobaczyć, jaki jest cel tego posiadania. Dopiero gdy masz ten modyfikator dostępu (chroniony), klasa potomna może używać pól klasy nadrzędnej.

Krok 2) Drugim krokiem jest dodanie naszej nowej klasy dziecięcej. Nazwa tej klasy to „Guru99Tutorial”. W tym kroku dodajemy poniższy kod do pliku Tutorial.cs. Kod należy umieścić po definicji klasy Tutorial.

Objaśnienie kodu: -

  1. Pierwszym krokiem jest utworzenie klasy potomnej Guru99Tutorial. Musimy również wspomnieć, że ta klasa będzie klasą podrzędną klasy Tutorial. Odbywa się to za pomocą słowa kluczowego „:”.
  2. Następnie definiujemy metodę o nazwie RenameTutorial. Będzie używany do zmiany nazwy pola TutorialName. Ta metoda akceptuje zmienną łańcuchową, która zawiera nową nazwę samouczka.
  3. Następnie przypisaliśmy parametr pNewName do pola TutorialName.

    Uwaga : - Mimo że nie zdefiniowaliśmy pola TutorialName w klasie „Guru99Tutorial”, nadal mamy dostęp do tego pola. Wynika to z faktu, że „Guru99Tutorial” jest klasą potomną klasy Tutorial. A ponieważ uczyniliśmy pola klasy Tutorial jako chronione, może uzyskać do nich dostęp ta klasa.

Krok 3) Ostatnim krokiem jest zmodyfikowanie naszego głównego pliku Program.cs. W naszej aplikacji konsolowej utworzymy obiekt klasy Guru99Tutorial. Za pomocą tego obiektu będziemy wywoływać metodę RenameTutorial. Następnie wyświetlimy pole TutorialName za pomocą metody GetTutorial.

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

Objaśnienie kodu: -

  1. Pierwszym krokiem jest utworzenie obiektu dla klasy Guru99Tutorial. Odbywa się to za pomocą słowa kluczowego „nowe”. Zauważ, że tym razem nie tworzymy obiektu klasy Tutorial.
  2. Używamy metody RenameTutorial klasy Guru99Tutorial do zmiany pola TutorialName. Przekazujemy ciąg „.Net by Guru99” do metody RenameTutorial.
  3. Następnie wywołujemy metodę GetTutorial. Zauważ, że nawet jeśli ta metoda nie jest zdefiniowana w klasie Guru99Tutorial, nadal mamy dostęp do tej metody. Dane wyjściowe metody GetTutorial są następnie wyświetlane w konsoli za pośrednictwem metody Console.WriteLine.

Jeśli powyższy kod zostanie wpisany poprawnie i program zostanie wykonany pomyślnie, wyświetlone zostanie następujące wyjście.

Wynik:

Na podstawie wyników widać wyraźnie, że nazwa pola TutorialName została zmieniona na „.Net by Guru99”. Było to możliwe dzięki metodzie RenameTutorial wywołanej przez klasę potomną.

Co to jest polimorfizm w C #?

Polimorfizm to koncepcja OOP, w której jedna nazwa może mieć wiele form.

Na przykład masz smartfon do komunikacji. Wybrany tryb komunikacji może być dowolny. Może to być połączenie telefoniczne, wiadomość tekstowa, wiadomość obrazkowa, poczta e-mail itp. Tak więc cel jest powszechny, czyli komunikacja, ale ich podejście jest inne. Nazywa się to polimorfizmem.

Lepiej zrozumiesz, jeśli zobaczysz tę akcję.

Zobaczmy teraz, jak możemy włączyć koncepcję polimorfizmu do naszego kodu.

Krok 1) Pierwszym krokiem jest zmiana kodu naszej klasy Tutorial. W tym kroku dodajemy poniższy kod do pliku Tutorial.cs.

Objaśnienie kodu: -

1 i 2) Pierwszy krok jest taki sam, jak we wcześniejszych przykładach. Zachowujemy definicję metody SetTutorial bez zmian.

3) Ta metoda ustawia TutorialID i TutorialName na podstawie parametrów pID i pName.

4) W tym miejscu dokonujemy zmiany w naszej klasie, w której dodajemy nową metodę o tej samej nazwie, co SetTutorial. Tylko tym razem przekazujemy tylko jeden parametr, którym jest pName. W tej metodzie ustawiamy tylko pole TutorialName na pName.

Krok 2) Ostatnim krokiem jest zmodyfikowanie naszego głównego pliku Program.cs. W naszej aplikacji konsolowej utworzymy obiekt klasy 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();}}}

Objaśnienie kodu: -

  1. W pierwszym kroku używamy metody SetTutorial z 2 parametrami. Gdzie przekazujemy TutorialID i TutorialName do tej metody.
  2. W drugim kroku wywołujemy teraz metodę SetTutorial z tylko jednym parametrem. Właśnie przekazujemy TutorialName do tej metody.

Jeśli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlone zostanie następujące wyjście. Jeśli chcesz również pobrać identyfikator samouczka wraz z nazwą samouczka, wykonaj poniższy krok

  1. Utwórz oddzielną metodę o nazwie public int GetTutorialID
  2. W tej metodzie napisz wiersz kodu „return TutorialID”. Może to służyć do zwrócenia TutorialID do programu wywołującego.

Wynik:

Na podstawie wyników widać wyraźnie, że obie metody zostały pomyślnie wywołane. Z tego powodu do konsoli zostały wysłane ciągi „First Tutorial” i „Second Tutorial”.

Podsumowanie

  • Dziedziczenie polega na tym, że klasa potomna dziedziczy pola i metody klasy nadrzędnej. Klasa potomna może wtedy również zdefiniować własne metody.
  • Polimorfizm to koncepcja OOP, w której jedna nazwa może mieć wiele form.