Przejdź do treści
FullstackDev

Dziedziczenie

Dziedziczenie to mechanizm programowania obiektowego, który pozwala na tworzenie nowych klas na bazie już istniejących. Klasa pochodna może dziedziczyć właściwości i metody klasy bazowej. Dzięki temu możliwe jest dziedziczenie zachowania i stanu z klasy bazowej do klasy pochodnej, co umożliwia unikanie powielania kodu i zwiększenie czytelności kodu. Dziedziczenie umożliwia też tworzenie hierarchii klas, co pozwala na łatwe rozszerzanie i modyfikowanie istniejącego kodu w miarę rozwoju aplikacji.

Przykład

using System;

class Animal
{
    public string Name { get; set; }

    public void Eat()
    {
        Console.WriteLine("Animal is eating");
    }
}

class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine("Dog is barking");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Dog dog = new Dog();
        dog.Name = "Reksio";
        dog.Eat();
        dog.Bark();

        Console.ReadLine();
    }
}

W powyższym przykładzie, mamy klasę Aniamal z właściwością Name u metodą Eat(). Klasa Dog dziedziczy po klasie Animal i dodatkowo posiada swoją metodę Bark(). Dzięki temu klasa Dog automatycznie dostaje dostęp do właściwości Name oraz do metody Eat() zdefiniowanej w klasie Aniaml.

Ograniczenia dziedziczenia

W języku C# istnieją kilka ograniczeń związanych z mechanizmem dziedziczenia:

  • Jedna klasa może dziedziczyć tylko po jednej klasie nadrzędnej. W językach, takich jak C++ i Java, jest to możliwe dzięki wielodziedziczeniu. W C#, w celu uzyskania wielodziedziczenia, należy użyć interfejsów.

  • Klasa dziedzicząca nie może zmienić dostępności metod nadrzędnej. Na przykład, jeśli metoda w klasie nadrzędnej jest oznaczona jako protected, to w klasie dziedziczącej nie można jej oznaczyć jako public.

  • Klasa dziedzicząca nie może nadpisać konstruktora nadrzędnej. Konstruktor jest jedyną metodą, która nie może być nadpisana.

  • Klasa abstrakcyjna nie może być instancjonowana. Można jedynie tworzyć obiekty klas pochodnych, które ją implementują.

YouTube

https://www.youtube.com/watch?v=01hz2-uTB80