Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Visual C# 2011 Grundkurs

Vererbung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wenn man in mehreren Klassen Gemeinsamkeiten erkennt, kann man diese in eine gemeinsame Basisklasse auslagern und davon ableiten. Was Vererbung ist und wie sie umgesetzt wird, schauen wir uns in diesem Video an.
06:24

Transkript

Schauen wir uns jetzt einmal an, was man machen kann, wenn man mehrere Klassen hat, die z.B. gleiche Eigenschaften oder gleiche Methoden haben. Und wie wir mit Hilfe der Vererbung uns dort sehr, sehr viel Code sparen können. Wenn man sich diese beiden Klassen anschaut, zunächst rechts die Person. Diese Person hat Eigenschaften wie "Energie", "hat Hunger", "Nachname" und "Name", und Methoden wie "esse", "laufe" und "rede". Wenn man jetzt eine Klasse schreiben würde, um einen Hund zu repräsentieren - hier auf der linken Seite - hätte man ähnliche Eigenschaften: "Energie", "hat Hunger", "Hundemarke" und "Name", und die Methoden "esse", "laufe" und "rede". Wenn man diese beiden Klassen vergleicht, dann haben die sehr, sehr viele Gemeinsamkeiten. Eigentlich unterscheiden Sie sich nur durch die "Hundemarke" beim "Hund" und den "Nachnamen" bei der "Person". Eine Person hat keine Hundemarke und ein Hund hat normalerweise auch keinen Nachnamen. Wenn ich das jetzt in C# implementieren würde, dann würde ich sehr oft sehr viel Code doppelt schreiben. Ich würde z.B. beim "Hund" eine Eigenschaft "Energie" implementieren, bei der "Person" auch - beim Hund eine Eigenschaft "hat Hunger" und beim Mensch auch usw. Das würde ich für alle Eigenschaften und Methoden machen, außer für "Hundemarke" und "Nachname". Das ist natürlich nicht schön. Deswegen sollte man versuchen, in solchen Klassen Gemeinsamkeiten zu suchen und diese Gemeinsamkeiten in sogenannte Basisklassen auszulagern. Hier haben wir die Basisklasse "Lebewesen" erstellt. Und diese Basisklasse "Lebewesen" hat jetzt all die Eigenschaften und Methoden, die die beiden Klassen vorher gemeinsam hatten. Also "Energie", "hat Hunger" und "Name" waren die gemeinsamen Eigenschaften und "esse", "laufe" und "rede" waren die gemeinsamen Methoden. Jetzt gehen wir in unsere Klassen "Person" und "Hund" hin und leiten von dieser Klasse ab - sieht man hier durch diesen symbolisierten Pfeil. Davon ableiten heißt, dass die Klasse "Person" jetzt dieselben Eigenschaften und Methoden hat wie die Klasse "Lebewesen", und zusätzlich ich in der Klasse "Person" neue Eigenschaften hinzufügen kann. Machen wir weiter beim Hund: Dort heißt auch es ableiten, dass Hund alle Eigenschaften von Lebewesen hat und zusätzlich die Hundemarke. Deshalb müssen wir solche Sachen wie die Eigenschaften und die Methoden nur einmal oben in Lebewesen programmieren und den Code dafür schreiben, und in "Person" und "Hund" können wir diese Funktionalitäten dann nutzen. D.h., wenn ich später ein Personenobjekt erstelle und rufe mit dem Punktoperator die verfügbaren Methoden und Eigenschaften auf, dann hat "Person" die Eigenschaften und Methoden von Lebewesen und zusätzlich die selbst definierte Eigenschaft "Nachname". Wie das Ganze funktioniert schauen wir uns jetzt mal im Visual Studio an. Dazu habe ich hier im Visual Studio schon was vorbereitet. Wir haben, ähnlich wie gerade im Beispiel, diese Klasse "Person". Diese Klasse "Person" hat einen Konstruktraum mit zwei String-Parametern. Und diese String-Parameter "Name" und "Nachname" werden intern in die jeweiligen Eigenschaften geschrieben. Zusätzlich wird die Energie hier auf 100 gesetzt. Darunter habe ich die verschiedenen Eigenschaften "Nachname", "Name", "Alter", "hat Hunger" und "Energie" - also wie gerade im Beispiel - mehr oder weniger - und zusätzlich noch eine Methode "laufe". In diese Methode "laufe", da gebe ich eine Strecke, und intern wird die dann quasi virtuell gelaufen. Von meinem bestehenden Energielevel des Menschen wird diese Strecke abgezogen, weil wenn ich laufe, verliere ich Energie. Jetzt bleiben wir bei diesem Beispiel mit dem Hund von eben. Wir wollen jetzt die Gemeinsamkeiten auslagern. Wir haben gesagt, außer diesem Nachnamen hier oben, waren alle Eigenschaften auch in der Klasse unten verfügbar - machten durchaus Sinn bei so einer Klasse "Lebewesen". Deswegen gehen wir jetzt mal hin und legen uns mit dem Rechtsklick auf die Projektmappe - "Hinzufügen" und Klasse an der Klasse "Lebewesen" an. Diese Klasse "Lebewesen" machen wir auch wieder public. Wir gehen jetzt mal hier hin und schneiden diesen Bereich aus, die Gemeinsamkeiten, und fügen die in der Klasse "Lebewesen" ein - mit Strg+X, Strg+V. Dann haben wir das in die gemeinsame Basisklasse ausgelagert und jetzt müssen wir, wie wir das eben auf den Folien gesehen haben, von dieser Klasse "Lebewesen" ableiten, damit wir diese Funktionalität aus der Klasse "Lebewesen" - aus dieser Basisklasse, nennt man das dann - nutzen können. Dazu gehe ich in die Klasse "Person", gehe oben hinter den Klassennamen, schreibe einen Doppelpunkt, und dann die Klasse, von der ich ableiten möchte - von "Lebewesen". Jetzt sieht man an der Stelle hier unten, dass "Name" unterstrichen ist. Es ist also eben ein Fehler passiert. Wenn wir uns das anschauen, dann steht dort, dass ich von dieser Stelle aus die Eigenschaft "Name" nicht setzen kann. Ich schaue oben in die Klasse "Lebewesen" und dort ist von "Name" der Setzbereich mit dem Zugriffsmodifizierer "Private" markiert. D.h., dass ich diesen Setter nur innerhalb dieser Klasse hier zugreifen kann. Das heißt aber auch, dass ich ihn nicht in abgeleiteten Klassen zugreifen kann. Deswegen gibt es einen neuen Zugriffsmodifizierer, und zwar ist das "Protected". "Protected" heißt, dass ich auf diesen Setter jetzt nur zugreifen kann, entweder von innerhalb dieser Klasse oder in abgeleiteten Klassen. Das müssen wir natürlich jetzt hier bei allen ändern. Hier - und an dieser Stelle. Damit sind wir fertig. Jetzt können wir hier auch in unserer Person dieses Setter nutzen von der Eigenschaft "Name". Wenn wir jetzt in unser Programm gehen, habe ich hier ein Objekt erzeugt mit meinen Daten auf der Referenz "Ich". Wenn ich jetzt auf "Ich" mal den Punktoperator aufrufe, sehen wir, dass diese ganzen Eigenschaften aus der Basisklasse, also aus "Lebewesen", wie "Alter", wie "Energie", "hat Hunger" und "Namen", übernommen wurden, mir in meiner abgeleiteten Klasse "Person" zur Verfügung stehen, ebenso die Methode "laufe". Also könnte ich jetzt hingehen und noch eine weitere Klasse "Hund" erstellen, von Klasse "Lebewesen" ableiten, zusätzlich noch die "Hundemarke" hinzufügen, und dann hätte ich in der Klasse "Hund", von der Klasse "Lebewesen" abgeleitet, und könnte diese Eigenschaften und Methoden ebenfalls nutzen. Das könnte ich immer so weiter treiben. Es gibt ja noch viele andere Klassen, die ich von "Lebewesen" ableiten könnte. Das kann man dann auf ganz elegante Art und Weise machen, hat diese Eigenschaften und diese Methoden nur an einer Stelle definiert, und kann sie dann in den abgeleiteten Klassen nutzen. Wir haben uns in diesem Film auch mal angeschaut, was man machen kann, wenn man in verschiedenen Klassen Gemeinsamkeiten gefunden hat, wenn Sie z.B. gemeinsame Eigenschaften oder gemeinsame Methoden implementieren. Diese Gemeinsamkeiten kann man in eine Basisklasse auslagern und von dieser Basisklasse dann ableiten. Ableiten heißt, dass die abgeleitete Klasse dieselbe Funktionalität, diese Methoden und Eigenschaften hat, wie die Basisklasse. Das setzt allerdings voraus, dass ich in der abgeleiteten Klasse auch darauf zugreifen kann. Dabei haben wir den neuen Zugriffsmodifizierer "Protected" kennengelernt, der bedeutet so was ähnliches wie "Private", also nur zugreifbar in der jeweiligen Klasse und zusätzlich noch in abgeleiteten Klassen.

Visual C# 2011 Grundkurs

Steigen Sie in die C#-Programmierung ein und lernen Sie sowohl die Grundlagen der Sprache C# als auch die Entwicklungsumgebung Visual Studio 2010 und .NET-Framework kennen.

7 Std. 28 min (81 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Visual Studio Visual Studio 2010
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.06.2011

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!