Ich habe eine zwei clases:Java, wie untergeordnete Anrufmethode an Eltern übertragen wird?
public class FlowItem {
}
public abstract class Flow extends FlowItem {
protected LinkedList<FlowItem> items = new LinkedList<FlowItem>();
public abstract void show(FlowItem item);
}
ich nächste Führungsstruktur haben:
public class AuthFlow extends Flow {
public AuthFlow() {
items.add(new PrivacyFlow());
items.add(new ExtendedPrivacyFlow());
items.add(new FinalFlowItem());
}
public void show(FlowItem item) {
// drawing logic
}
}
PrivacyFlow
und ExtendedPrivacyFlow
auch von Flow
erweitert. FinalFlowItem
erweitert von FlowItem
. Die Frage ist: wie man Single \ parent Implementierung von show(...)
Methode verwenden? Ich möchte Zeichnungslogik an einem Ort behalten.
Wenn Sie Ihre Show-Methode als eine nicht-abstrakte Methode in das übergeordnete Objekt FlowItem einfügen, könnte es wie gewünscht funktionieren? Du definierst einmal deine Methode und verwendest sie in allen deinen Kindern – Alex
Wahrscheinlich möchtest du über https://en.wikipedia.org/wiki/Open/closed_principle lesen. Beginnen mit: Wenn Sie "zeigen" Logik sollte üblich sein, dann gut, implementieren Sie diese Methode in Ihrer Basisklasse. Das ist, wofür Basisklassen am Ende sind: um allen Unterklassen ein ** allgemeines ** Verhalten zu geben. – GhostCat
machen Sie eine konkrete Methode in der abstrakten Klasse. – Milaci