Sop24PL 40 Opublikowano 9 lipca 2018 Udostępnij Opublikowano 9 lipca 2018 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! Glicz i Usunięty#3468 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi