Предположим, мне нужно использовать библиотеку, в которой есть класс, реализующий двоичное дерево, с такой подписью:
class Node {
public void setN0(Node n);
public void setN1(Node n);
public Node getN0();
public Node getN1();
}
Итак, я хочу создать класс, который расширяет его, наложить на него графический слой, например
class UINode extends Node {
private int coordinateX;
private int coordinateY;
}
Но я не могу этого сделать, потому что невозможно передать UInode в Node, как
UINode root = new UINode();
UINode n0 = new UINode();
UINode n1 = new UINode();
root.setN0(n0); //Not possible
root.setN1(n1); //Not possible
Есть ли шаблон проектирования или что-то, чтобы справиться с этой ситуацией? Или есть простое решение, которое я не вижу?