Betrachten Sie die folgenden zwei Klassen:Ist es eine schlechte Methode, Vererbung zu verwenden, wenn ich alle Methoden überschreiben möchte?
class A {
String _name;
char _type;
public A(String name, char type) {
_name = name; _type = type;
}
public int method1() {
do_something...;
}
public String method2() {
make_something...;
}
}
und
class B extends A {
public B(String name) {
super(name, 'a');
}
@Override
public int method1() {
do_something_else...;
}
@Override
public String method2() {
String answer = super.method2();
answer += more_processing...;
}
}
ich Erbschaft hier verwende, weil die Klassen viele Dinge gemeinsam haben. Jedoch, weil ich alle Methoden aus der Oberklasse überschreibe, ist es eine gute Idee, die Vererbung hier zu verwenden?
Was genau sie gemeinsam haben? –
die Felder, und die Unterklassenmethoden rufen die Superklassenmethoden zu Zeiten auf –
In diesem Beispiel wird Vererbung nicht wirklich verwendet, weil 'B' nicht' A' erweitert. Aber wenn es so wäre, würde die Vererbung Sinn ergeben, wenn Sie wollen, dass 'B' das Verhalten von' A' erbt und Sie nur 'B' anpassen möchten und/oder Sie' B' Objekte mit 'A' herumreichen wollen Zeiger anstelle von 'B' Zeigern. –