Ich versuche die folgende Frage zu beantworten:
Eine untergeordnete Klasse erbt bestimmte Mitglieder der übergeordneten Klasse nicht. Nenne drei solche Mitglieder.
Ich weiß, dass private Mitglieder nicht an untergeordnete Klassen vererbt werden und Standardmitglieder nicht außerhalb des Pakets vererbt werden. Kann jemand die Antwort vervollständigen?
Bearbeitet: - Ich glaube, dass statische Mitglieder gemäß unten stehender Demonstration vererbt werden %Vor%
Keine Antwort, um die Begriffe zu verwenden.
Mitglieder, die sichtbar in der untergeordneten Klasse sind, werden oben beantwortet. Mitglieder sind sowohl Felder als auch Methoden (jede hat ihren eigenen Namensraum).
Vererbung als Teil der untergeordneten Instanz ist eine andere Frage: Auch unsichtbare private Mitglieder werden als solche "geerbt". Static Member sind Teil der Klasseninstanz und werden nicht vererbt (kann auch nicht überschrieben werden). Alle final Methoden können nicht überschrieben werden.
Argumentable Konstruktoren werden nicht vererbt; Sie müssen dieselbe Signatur in einem neuen untergeordneten Konstruktor erneut definieren.
Andere Deklarationen in einer Klasse könnten Klassendefinitionen sein. Dort hat das Schlüsselwort static
eine andere Bedeutung und man kann offensichtliche Aussagen zur Sichtbarkeit / Vererbung machen. Zum Beispiel in Bezug auf nicht statische innere Klassen, die eine <outer-class>.this
(rekursive Vorstellung) haben.
Konstruktoren, statische Initialisierer und Instanzinitialisierer sind keine Member und werden daher nicht vererbt.
aus der Oracle Java-Dokumentation für Vererbung :
Eine Unterklasse erbt alle Mitglieder (fields, methods und nested) Klassen) von seiner Oberklasse. Konstruktoren sind keine Mitglieder, also sie werden nicht von Unterklassen geerbt, sondern vom Konstruktor der Oberklasse kann von der Unterklasse
aufgerufen werden
Ich denke also, dass Sie hier Konstrukteure vermissen.
Statische Methoden und Felder werden auch nicht vererbt, wenn sie in Unterklassen umgeschrieben werden, verwenden sie einfach die Signatur und hide
die Implementierung der Methode / des Feldes in der Elternklasse.
Informationen zur Vererbung von statischen Feldern und Methoden finden Sie in dieser Diskussion steckte von Duncan, und dieses große Tutorial Overriding vs Verstecken
Sie können kein privates Feld und keinen Konstruktor erben. Sie können einen Konstruktor nicht erben, da sie kein Mitglied der Superklasse sind. Sie können eine Superklassenkonstruktorform ihrer Unterklasse aufrufen. und Sie können auch auf ein privates Mitglied der Super-Klasse zugreifen kann durch öffentliche oder geschützte Methode der Super-Klassen zugegriffen werden.
Tags und Links java class inheritance subclass