Skocz do zawartości
Sop24PL

C# - Dziedziczenie, czyli trochę o dziedziczeniu klas

Rekomendowane odpowiedzi

Użytkownik

C# Dziedziczenie

Dzisiejszy poradnik będzie poświęcony dziedziczeniu klas w C#. Nie jest ono takie trudne jak się wydaje, a daje naprawdę dużo.

Czym jest dziedziczenie?

Dziedziczenie w językach programowania oznacza pobranie wszystkich pól oraz metod z klasy po której dziedziczy (pod warunkiem, że nie są one private).

Nie powinno w klasie rodzica robić zmiennych prywatnych. Chyba że do ich setowania użyjemy Właściwości

Jak dziedziczyć po klasie?

Aby wasza klasa mogła dziedziczyć po innej należy po nazwie klasy dodać : NazwaKlasyRodzica

public class Dziecko : NazwaKlasyRodzica{
  
}

i klasa rodzica

public class NazwaKlasyRodzica {
	private const int id = 1;
	public string Imie;

	public virtual int GetID(){
		return id;
	}

	private void Say(string msg){
		Console.Write(msg);
		return;
	}
}

Jak widzicie jedna metoda z klasy rodzica ma w sobie słowo virtual. Jest ono potrzebne aby klasa dziecka mogła użyć tej metody.

Teraz klasa Dziecko odziedziczy pole Imie i metode GetID() gdyż są one publiczne.

No dobra załóżmy że teraz klasa dziecko chce skorzystać z metody rodzica GetID() i wyświetlić wynik.

Zróbmy to!

public class Dziecko : NazwaKlasyRodzica{
  public ovveride GetID(){
  int id = base.GetID();
  Console.Write(id.ToString());
  }
}

Jak już widzicie aby użyć metody z klasy rodzica trzeba utworzyć w klasie dziecka metode ze słowem override z taką samą nazwą.

Ale teraz nasuwa się pytanie jak pobrać to id? do tego musimy wywołać metodę w klasie rodzica, która zwraca nam id, dlatego

ustawiamy zmienną lokalną id na base.GetID().

(Klasa dziedziczona w klasie dziecko może wykonywać inny kod niż ta u rodzica.

Jeśli metoda coś zwraca wynik będzie w base.NazwaMetody)

base wskazuje na klase po której dziedziczymy, po niej dajemy parametr/metode którego/której wartość chcemy pobrać z klasy rodzica

I w końcu wyświetlamy wynik.

Cytat

1

A oto nasz wynik!

 

Jest jeszcze jedna ciekawostka którą warto znać

Dziecko dziecko = new Dziecko();
NazwaKlasyRodzica rodzic = dziecko;

Co ty właściwie robisz?!

Już Ci to tłumacze.

Stworzyłem instancje klasy Dzieko i przypisałem ją do instancji klasy rodzic.

Tak się da?

Tak, ponieważ klasa Dziecko dziedziczy po klasie rodzic i ma wszystkie jej pola i właściwości (publiczne).

Ej... a co z konstuktorem?

No właśnie i tu stawiamy pytanie co z konstruktorem?

To proste! Załóżmy, że chcemy w konstruktorze klasy rodzica przekazywać jego Imię.

Zróbmy to!

public class NazwaKlasyRodzica {
	public NazwaKlasyRodzica(string imie){
     		this.Imie = imie; 
    	}
  //Dalsz część kodu
}

Jak widzicie w konstruktorze przekazujemy imie i ustawiamy zmienną Imię na takie jakie użytkownik poda podczas tworzenia instancji.

I tutaj będziemy musieli dodać również konstruktor do klasy Dziecko

Zróbmy to!

public class Dziecko : NazwaKlasyRodzica{
  public Dziecko(string adres, string imie):base(imie){
    this.Adres = adres;
  }

private string Adres;
//Dalsza część kodu
}

Teraz klasa Dziecko w konstruktorze przekazuje do siebie adres i dodadkowo do konstruktora klasy rodzica imie.

: base(parametry konstruktora rodzica) - Dzięki temu przekazujemy parametry do konstruktora rodzica.

Wniosek: Klasa dziecko może mieć w konstruktorze własne parametry, ale musi posiadać również parametry klasy rodzica.

Jak mam wykorzystać dzisiejszą wiedze?

Polecam Ci potworzyć sobię pare aplikacji wykorzystujących dziedziczenie.

Jakich programów mam użyć?

Polecam Visual Studio 2015 lub 2018

 

To wszystko w dzisiejszym poradniku. Jeśli masz jakieś pytania pisz śmiało!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Ten temat jest nieaktywny od dłuższego czasu. Nie odkopuj go bez potrzeby.

Dołącz do dyskusji

Możesz napisać post i zarejestrować się później. Jeżeli masz już konto, zaloguj się, aby napisać post przypisany do twojego konta.

Losowy awatar
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Maksymalnie dozwolone są tylko 75 emotikony.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×