TOC

This article has been localized into German by the community.

Klassen:

Mehr abstrakte Klassen

Im vorherigen Kapitel haben wir uns abstrakte Klassen angesehen. In diesem Kapitel werden wir die Beispiele ein wenig erweitern und einige abstrakte Methoden einbringen. Abstrakte Methoden sind nur in abstrakten Klassen erlaubt. Ihre Definition wird wie eine normale Methode aussehen, aber sie enthalten keinen Code:

abstract class FourLeggedAnimal
{
    public abstract string Describe();
}

Aber, warum sollten Sie eine leere Methode definieren, die nichts tut? Weil es bei einer abstrakten Methode eine Verpflichtung ist, genau diese Methode in allen Unterklassen zu implementieren. In der Tat wird es zur Kompilierzeit überprüft, um sicherzustellen, dass Ihre Unterklassen diese Methode definiert haben. Dies ist wiederum eine großartige Möglichkeit, um eine Basisklasse für etwas zu erstellen, während Sie immer noch eine gewisse Kontrolle darüber haben, was die Unterklassen tun können. Aus diesem Grund können Sie eine Unterklasse immer als Basisklasse behandeln, wenn Sie Methoden verwenden müssen, die in der Basisklasse als abstrakte Methoden definiert sind. Betrachten Sie zum Beispiel das folgende Beispiel:

namespace AbstractClasses
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Collections.ArrayList animalList = new System.Collections.ArrayList();
            animalList.Add(new Dog());
            animalList.Add(new Cat());
            foreach(FourLeggedAnimal animal in animalList)
                Console.WriteLine(animal.Describe());
            Console.ReadKey();
        }
    }

    abstract class FourLeggedAnimal
    {
        public abstract string Describe();
    }


    class Dog : FourLeggedAnimal
    {

        public override string Describe()
        {
            return "I'm a dog!";
        }
    }

    class Cat : FourLeggedAnimal
    {
        public override string Describe()
        {
            return "I'm a cat!";
        }
    }
}

Wie Sie sehen können, erstellen wir eine "ArrayList", um unsere Tiere aufzunehmen. Wir instanziieren dann einen neuen Hund und eine neue Katze und fügen sie der Liste hinzu. Sie werden jeweils als Hund und Katze instanziiert, aber sie sind auch vom Typ FourLeggedAnimal, und da der Compiler weiß, dass Unterklassen dieser Klasse die Describe () -Methode enthalten, können Sie diese Methode tatsächlich aufrufen, ohne genau zu wissen welche Tierart es ist. Durch Typumwandlung nach FourLeggedAnimal, was wir in der foreach-Schleife tun, erhalten wir Zugriff auf Mitglieder der Unterklassen. Dies kann in vielen Szenarien sehr nützlich sein.


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!