Java Basic Learning – eine kurze Zusammenfassung der Vererbung
Codereferenz: Java Basic Learning Notes-Polymorphismus
Warum sollte Vererbung eingeführt werden?
Erstellen wir eine Medienbibliothek, die CDs und DVDs speichern kann. Wenn CD und DVD in zwei unabhängige Klassen unterteilt werden, müssen Sie bei der Verwaltung dieser Medienbibliothek eine separate Funktion zum Hinzufügen von CDs und eine separate Funktion zum Hinzufügen von DVDs erstellen. Wenn Sie dieser Medienbibliothek weitere Medienklassen hinzufügen möchten, Es muss eine weitere Zusatzfunktion geschaffen werden. Wir sagen, dass ein solcher Code nicht skalierbar ist. Darüber hinaus weisen CDs und DVDs viele Ähnlichkeiten auf, darunter Titel, Spielzeit, Kommentare usw. Wir sagen, dass ein solches Programm viele Code-Duplikate aufweist und dass Code-Duplizierung ein Ausdruck von schlechtem Code ist. Wir können also eine übergeordnete Klasse von ihnen erstellen, dieselben Mitgliedsvariablen zur übergeordneten Klasse hinzufügen und alle können diese Variablen erben. Beim Hinzufügen zur Medienbibliothek müssen wir nur eine Funktion erstellen, die ihre übergeordnete Klasse hinzufügt können ebenfalls hinzugefügt werden.
Was erbt die Unterklasse von der übergeordneten Klasse?
Alles von der übergeordneten Klasse erben, einschließlich Mitgliedsvariablen und Mitgliedsfunktionen. Möglicherweise können Sie jedoch nicht auf alles in der übergeordneten Klasse zugreifen. Sehen Sie sich daher die Zugriffsattribute der von der übergeordneten Klasse geerbten Mitgliedsvariablen und Mitgliedsfunktionen an. Wenn eine Mitgliedsvariable in der übergeordneten Klasse privat ist, kann die Unterklasse nicht direkt darauf zugreifen. Auf private kann jedoch nur von der übergeordneten Klasse selbst zugegriffen werden, sodass wir indirekt auf diese Mitgliedsvariablen in der Unterklasse zugreifen können, indem wir die öffentliche Funktion der übergeordneten Klasse aufrufen.
Darüber hinaus kann eine Unterklasse nicht nur von der übergeordneten Klasse erben, sondern auch über eigene eindeutige Mitgliedsvariablen und Funktionen verfügen, die in ihrer eigenen Klasse geschrieben sind.
Zugriffsattribut
Zugriffsattribut Bedeutung
öffentlich Offen für alle
privat Nur Sie haben Zugriff
geschützt Nur Sie und Ihre Kinder Die Klasse und andere Klassen im Paket können auf
zugreifen. Standardmäßig können nur sie selbst und andere Klassen im Paket auf
super();
in der übergeordneten Klasse Die im Konstruktor der Unterklasse erstellten Mitgliedsvariablen müssen in der Parameterliste des Konstruktors der Unterklasse angegeben werden, und super () wird verwendet, um diese in der übergeordneten Klasse erstellten Mitgliedsvariablen von der übergeordneten Klasse abzurufen. Beispielcode finden Sie im Blogbeitrag zu Polymorphismus. Die Parameter in super(); bestimmen, welcher Konstruktor in der übergeordneten Klasse aufgerufen wird. Die Parameter in super(); Im Standardmodus (wenn im Unterklassenkonstruktor kein super(); vorhanden ist), wird standardmäßig der Konstruktor ohne Parameter in der übergeordneten Klasse aufgerufen. Wenn in der übergeordneten Klasse kein solcher Konstruktor vorhanden ist, Eclipse meldet einen Fehler. Überschreiben Wenn es eine Funktion mit demselben Namen in der Unterklasse und der übergeordneten Klasse gibt, überschreibt die Funktion in der Unterklasse die von der übergeordneten Klasse geerbte Funktion , dann wird die Funktion der übergeordneten Klasse ausgeblendet und funktioniert nicht. Wenn Sie jedoch die Funktion mit demselben Namen in der übergeordneten Klasse in der Unterklasse aufrufen möchten, sollten Sie sie als super.function name(); schreiben.<br/>