2013-02-15 13 views
5

Ich habe gerade eine Warnung in meiner IDE, dass meine Klasse ist abstract, aber es ist von concrete Klasse abgeleitet. Und was? Warum kann ich das nicht tun? Dies entspricht meinen Bedürfnissen sehr gut. Es ist nur eine Warnung, also ist die Klasse kompilierbar. Interessiert nur, warum es mir diese Warnung gibt. Vielen Dank.Abstrakte Klasse abgeleitet von Beton Klasse

aktualisieren

Ich brauche meine Frage mit einigen Erklärungen zu verlängern. Ich habe diese Klasse von anderen Klassen abgeleitet und möchte, dass niemand sie instanziieren kann. Außerdem brauche ich zwei Unterklassen aus dieser abstrakten Klasse, und jede von ihnen hat ihre eigene Implementierung einer abstrakten Methode. Deshalb.

Denken Sie, dass es eine schlechte Idee ist? Welchen Ansatz soll ich stattdessen verfolgen?

+0

es ist schlechtes Design, IMO zu stören. – Azodious

+0

scheint dies eher nach Zusammensetzung als nach Vererbung zu fragen. –

+0

Können Sie genauere Informationen zu Ihrem Anwendungsfall angeben? Von welchen Klassen sprichst du? Vielleicht haben Sie ein schlechtes Design oder verwenden einfach das falsche Werkzeug für den Job - siehe auch die Antwort von qben. –

Antwort

3

Ich denke der Grund ist vielleicht, dass abstrakte Klassen in der Regel für grundlegende Verhaltensweisen/Informationen zum Erstellen von Unterklassen dienen. Denken Sie bei einer solchen Entscheidung an andere Programmierer. Andere erwarten es nicht.

Wie auch immer, Sie können Compilereinstellungen festlegen, um keine Warnungen für diese Art von "Problem" zu geben.

aktualisieren

nach dem Update zu lesen Ich denke, die einfachste Art und Weise constructor protected ist diese Klasse zu erklären ist. Für die abstrakte Methode: Sie können einfach override, dass von Ihren Unterklassen, denke ich.

+0

Nein, ich kann den geschützten Konstruktor nicht verwenden, weil untergeordnete Klassen in einem anderen Paket liegen würden. – Eugene

2

Sie können das tun. Deshalb haben Sie eine Warnung erhalten und keinen Fehler.

Dies ist ein häufiger Fall und weist in der Regel auf eine schlechte Systemarchitektur hin. Deshalb zeigt der Compiler eine Warnung an.

0

Java-Compiler-Warnungen sind nur ein Hinweis für den Programmierer, der nicht normal ausgeführt werden sollte, sonst könnte der Programmierer in Zukunft Fehler bekommen.

See this link wie es erklärt, warum über Warnungen

Verwandte Themen