Objektorientierung: Vererbung

Bei der Vererbung werden, wie der Name schon vermuten lässt, Funktionen, Variablen und Eigenschaften von der einen Klasse (Basisklasse) zu einer anderen Klasse (abgeleitete Klasse) vererbt. Die Basisklasse (auch Elternklasse oder vererbende Klasse genannt) stellt also Funktionen, Variablen und Eigenschaften zur Verfügung, welche in einer oder mehreren abgeleiteten Klasse(n) (auch Kindklasse(n) genannt) zur Verfügung stehen. Grundsätzlich kann jede Klasse als Basisklasse verwendet werden. Bei der abgeleiteten Klasse muss hinter dem Klassennamen ein Doppelpunkt und dahinter die Basisklasse notiert werden. Die abgeleitete Klasse kann auf alle Funktionen, Variablen und Eigenschaften der Basisklasse zugreifen, welche den Zugriffsmodifizierer protected oder public besitzen.
Nun zu unserem Beispiel: Als Basisklasse verwenden wir die Klasse Computer. Diese enthält die Eigenschaften HdmiVorhanden und FestplattenGröße. Die Klasse Notebook ist eine Kindklasse, die von der Klasse Computer erbt. Des Weiteren enthält die Klasse Notebook eine weitere Eigenschaft namens BildschirmDiagonale. Im Konstruktor der Klasse Notebook wird die Festplatten-Größe auf 512 GB gesetzt. Hier könnten wir nun auf die Eigenschaft FestplattenGröße zugreifen, zu Demonstrations-Zwecken greifen wir jedoch direkt auf die Variable iFestplattenGröße zu. Der Zugriff auf die Variable ist von der Kindklasse nur möglich, da der Zugriffsmodifizierer der Variable auf protected gesetzt wurde. Hierdurch ist ein Zugriff von der Klasse selbst und der abgeleiteten Klasse möglich.

Program.cs

using System;

namespace CSV20.Vererbung
{
    class Program
    {
        static void Main(string[] args)
        {
            Notebook oNotebook = new Notebook();

            // oNotebook.iFestplattenGröße = 1024; > nicht möglich da Zugriff nur von der Klasse selbst oder der geerbten Klasse möglich ist
            oNotebook.FestplattenGröße = 1024;
            // oNotebook.iBildschirmdiagonale = 13; > nicht möglich da Zugriff nur von der Klasse selbst erlaubt ist
            oNotebook.BildschirmDiagonale = 13;
            Console.WriteLine(oNotebook.BildschirmDiagonale);
            
            Console.ReadKey();
        }
    }
}

Computer.cs
namespace CSV20.Vererbung
{
    public class Computer
    {
        // auf diese Variable, können auch geerbte Klassen zugreifen
        protected int iFestplattenGröße = 256;

        public bool HdmiVorhanden { get; set; }
        public int FestplattenGröße
        {
            get
            {
                return iFestplattenGröße;
            }
            set
            {
                if (value >= 32 && value <= 4096)
                    iFestplattenGröße = value;
            }
        }
    }
}

Notebook.cs
namespace CSV20.Vererbung
{
    public class Notebook : Computer
    {
        private int iBildschirmDiagonale = 15;

        public int BildschirmDiagonale
        {
            get
            {
                return iBildschirmDiagonale;
            }
            set
            {
                // Wert validieren
                if (value >= 10 && value <= 17)
                    iBildschirmDiagonale = value;
            }
        }

        public Notebook()
        {
            // Notebooks bekommen standardmäßig eine Größe von 512 GB zugewiesen
            // an dieser Stelle könnte auch "FestplattenGröße = 512;" genutzt werden, 
            // jedoch wollen wir hier die Verwendung von protected demonstrieren
            iFestplattenGröße = 512;
        }
    }
}
Download

LinksRechts