TOC

This article has been localized into Czech by the community.

Třídy:

Dědičnost

Jedním z naprosto klíčových aspektů objektově orientovaného programování (OOP), což je koncept, na kterém je C# založen, je dědičnost - schopnost tvořit třídy, které zdědí určité aspekty od rodičovských tříd. Celý .NET framework je postaven na tomto konceptu, což má za následek, že "vše je objekt". Dokonce i jednoduché číslo je instancí třídy, která dědí od třídy System.Object, ačkoliv .NET vám trochu pomáhá, takže můžete číslo přiřadit přímo, místo toho, abyste museli vytvářet novou instanci například třídy Integer.

Tento předmět může být trochu obtížné pochopit, ale někdy pomáhá s některými příklady, takže začněte s jedním z těchto:

public class Animal
{
    public void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}

public class Dog : Animal
{

}

Nejprve definujeme třídu zvířat, která má jednoduchou metodu k pozdravu. Poté definujeme třídu psů a dvojtečku, abychom C# řekli, že třída Dog by měla dědit ze třídy Animals. Krásná věc je v tom, že to dává smysl i v reálném světě - pes je zjevně zvíře. Vyzkoušejte použití tříd:

Animal animal = new Animal();
animal.Greet();
Dog dog = new Dog();
dog.Greet();

Pokud spustíte tento příklad, zjistíte, že i když jsme pro třídu Dog neurčili metodu Greet (), stále ví, jak nás pozdravit, protože zdědí tuto metodu z třídy zvířat. Tento pozdrav je však trochu anonymní, takže si jej přizpůsobíme, když víme, jaké zvíře je:

public class Animal
{
    public virtual void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}

public class Dog : Animal
{
    public override void Greet()
    {
        Console.WriteLine("Hello, I'm a dog!");
    }
}

Kromě přidané metody na třídě Pes byste si měli všimnout dvou věcí: přidali jsme do virtuální třídy klíčové slovo "virtual" a na třídě Pes používám klíčové slovo přepsat "override".

V jazyce C# nemůžete přepisovat člena třídy, pokud není označen jako virtuální. Pokud chcete, můžete přistupovat ke zděděné metodě, a to i při přepsání, pomocí klíčového slova "base".

public override void Greet()
{
    base.Greet();
    Console.WriteLine("Yes I am - a dog!");
}

Metody však nejsou jedinou věcí, kterou je možné zdědit. Ve skutečnosti se do značné míry dají zdědit všichni členové třídy, včetně polí a vlastností. Jen si pamatujte pravidla viditelnosti, jak bylo popsáno v předchozí kapitole.

Dědičnost není pouze z jedné třídy do druhé - můžete mít celou hierarchii tříd, které se dědí navzájem. Například mohli bychom vytvořit třídu Puppy ("Štěně"), která dědí z naší třídy Dog ("Pes") a která opět dědí ze třídy Animal ("Zvíře"). Co nemůžete provést v C# je nechat jednu třídu dědit z několika dalších tříd najednou. Vícenásobná dědičnost, jak je tomu přezdíváno, není v C# podporována.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!