Java: Kann eine Klasse Erben zwei super Klassen zur gleichen Zeit?
Habe ich eine Klasse Reise, die ich machen will eine Oberklasse einer anderen Klasse plannedjourney.
Die plannedjourney Klasse extends JFrame da es enthält Formen..Aber ich will auch diese Klasse erweitert die Reise..
Gibt es eine Möglichkeit, dies zu tun?
Nein. es gibt keine Mehrfachvererbung in java. Check stackoverflow.com/questions/3621290/java-multiple-inheritance, stackoverflow.com/questions/1038314/..., stackoverflow.com/questions/3448864/...
Unterklassen von Swing-Komponenten ist selten eine gute Idee. Diese Klassen sind schon sehr groß. Es ist besser, Zusammensetzung (Ihre Klasse reference frame).
eine ganze Reihe von Antworten in ein paar Sekunden, die man hätte vermeiden können, indem Sie suchen, ein wenig mehr in die bereits vorhandenen Fragen (und Antworten !) 🙂
Erweiterung JFrame ist fast immer falsch.
Unterklassen von Swing-Komponenten ist selten eine gute Idee. Diese Klassen sind schon sehr groß. Es ist besser, Zusammensetzung (Ihre Klasse reference frame).
eine ganze Reihe von Antworten in ein paar Sekunden, die man hätte vermeiden können, indem Sie suchen, ein wenig mehr in die bereits vorhandenen Fragen (und Antworten !) 🙂
Erweiterung JFrame ist fast immer falsch.
InformationsquelleAutor Vimal Basdeo | 2011-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht-mix-Modelle und Ansichten. Wenn Sie halten Sie beide Bereiche klar getrennt sind, dann werden Sie nicht in der Notwendigkeit von Mehrfachvererbung (für diese Zeit).
Sie haben eine model-Klasse für Reisen und einen Betrachter für solche Reisen. Der Betrachter sollte Unterklasse
Component
und angezeigt werden (irgendwo) in die Fenster (einJFrame
Instanz).Dieser viewer übernimmt eine Reise-Objekts und stellt den Reise-Eigenschaften.
Journey
allein hat alle Informationen über eine Reise, die nur der Zuschauer weiß, wie eine Reise an den Benutzer:Nun können Sie eine Instanz von PlannedJourney und fügen Sie die Anwendungen
JFrame
an der entsprechenden position.InformationsquelleAutor Andreas_D
Keine Mehrfachvererbung in Java.
Es ist nicht erlaubt, die durch die Sprache. Überprüfen Sie, ob Sie Ihren Entwurf ändern, um Schnittstelle zu verwenden, statt. (es ist fast immer möglich).
Ja, das ist es, was ich meinte, als manchmal, auch wenn möglich, ist es besser, zweimal überlegen, über das design ändern und es nicht umsetzen, sondern etwas, upside-down.
InformationsquelleAutor LudoMC
Nein das ist nicht möglich mit Java. In der Regel wird ein ähnlicher Effekt kann erreicht werden über Schnittstellen (ich bin am überlegen Reise kann hier eine Schnittstelle), obwohl, wenn Sie wollen, um zu Erben Methode-Implementierungen, dann müssen Sie überdenken Ihren Entwurf.
Meine beste Vermutung, von Ihrer Beschreibung ist, dass Sie getrennt werden können, Ihre Klassen in einer Hierarchie, die die Daten darstellt, die Modell, und ein anderer, erstreckt JFrame zur Anzeige der Daten.
InformationsquelleAutor David Tang
Aus der Vererbung Seite der Sun Java Tutorial
InformationsquelleAutor Sean Patrick Floyd
Entweder
Journey
erweiternJFrame
oder machenJourney
eine Schnittstelle.Wählen Sie die option, die am meisten Sinn macht für Ihr Objekt-Struktur.
Ob es Sinn macht für
Journey
zu erweiternJFrame
dann tun. Auf diese Weise, wennPlannedJourney
erstrecktJourney
es erbt auch alles, wasJourney
ausJFrame
.Wenn dies nicht Sinn machen, dann machen
Journey
eine Schnittstelle und habenPlannedJourney
implementierenJourney
.PlannedJourney
werden nicht in der Lage zu Erben, beliebigen code ausJourney
, aber Sie werden in der Lage sein zu Methode Erben Unterschriften und übergeben Sie das Objekt, um wie einJourney
zusätzlich alsJFrame
.Sicher sein, wenn Sie arbeiten mit Schwung, dass Sie die Trennung der Modell aus der Ansicht. Ihre Daten, die gespeichert werden soll in eine Gruppe von Objekten (Modell), und die Swing-Komponenten zur Darstellung dieser Daten sollte eine separate Gruppe von Objekten (Ansicht). Dies hilft, um Daten zu Kapseln Funktionen, die Sie trennen von GUI-Objekten und für die Umsetzung einer one-way-Vertrauen in die Ansicht auf die Modell. Bedenken Sie, dass ein
Journey
Objekt sollte vielleicht erfordern eineJourneyFrame
angezeigt. Dieser Weg, derJourneyFrame
kümmern kann, nur die Anzeige und erweitern könnenJFrame
und tragen nur einen Verweis aufJourney
, die haben Ihre eigene Hierarchie.Der erste Teil war die Beantwortung der Frage, "Kann eine Klasse Erben zwei super Klassen zur gleichen Zeit?" Ich glaube, es ist wichtig, die Antwort auf die Frage. Der zweite Teil ist der gesunde Menschenverstand Beratung über das konkrete Beispiel genannt. Ich weiß auch nicht abonnieren Decke Aussagen wie "favor composition over inheritance." Ich will immer gefallen, was macht Sinn, was nicht.
InformationsquelleAutor Erick Robertson
Nicht. Es gibt keine Mehrfachvererbung in Java. Dies war eine bewusste design-Entscheidung.
Wenn Sie einen Weg finden, um auszudrücken, einer der Superklassen ein interface statt, dann könnte dies Ihr problem lösen.
InformationsquelleAutor Philip Potter
Ich denke, ein besserer Weg sein könnte, um zu haben PlannedJourney verlängern Reise und dann haben PlannedJourney haben eine Instanz von JFrame. Es sieht aus wie ein Weg, um zu töten zwei Vögel mit einem Stein, je nachdem, wie Sie es sehen.
InformationsquelleAutor Norm
Mehrfachvererbung in Java nicht möglich.
Mehrere Implementierungen des interfaces möglich ist, ist dies die nächste Sache, um multiple Vererbung in Java du hast.
Wenn möglich, zugunsten Komposition über Vererbung. Zitat entnommen Effektive Java.
InformationsquelleAutor darioo
Wenn Sie noch nicht gelesen "Effective Java" von Joshua Bloch ist jetzt die Zeit, es zu tun. Besonders der Abschnitt "favor composition over inheritance". Da Sie nicht tun können multiple inheritence in Java, erklärt er, warum in fast allen Fällen der richtige Ansatz ist, um Ihre JFrame Erweiterung ENTHÄLT einen Verweis auf die PlannedJourney es ist das UI.
InformationsquelleAutor DJClayworth
Nicht genau wissen was Sie wollen, aber die Mehrfachvererbung ist ein sehr gut möglich, und gemeinsame Sache in Java. Erstens, wenn eine Klasse von einer anderen Klasse erbt, wenn das Klasse ist, ebenfalls eine Unterklasse einer anderen Klasse ist, wird es weitergeben, es geerbten Methoden, um es in den Unterklassen. Zweitens, in Java gibt es eine Zeichenkette der Kodierung andererseits bekannt als 'der Schnittstelle', dies ermöglicht es für eine Klasse erbt von mehreren Klassen, die ohne die Verlängerung der a-Klasse.
InformationsquelleAutor programming major