Итак, я создал этот простой интерфейс:
package{
public interface GraphADT{
function addNode(newNode:Node):Boolean;
}
}
Я также создал простой класс Graph:
package{
public class Graph implements GraphADT{
protected var nodes:LinkedList;
public function Graph(){
nodes = new LinkedList();
}
public function addNode (newNode:Node):Boolean{
return nodes.add(newNode);
}
}
last, но не по крайней мере, я создал еще один простой класс AdjacancyListGraph:
package{
public class AdjacancyListGraph extends Graph{
public function AdjacancyListGraph(){
super();
}
override public function addNode(newNode:AwareNode):Boolean{
return nodes.add(newNode);
}
}
Такая настройка вызывает у меня ошибки, а именно:
1144: Interface method addNode in namespace GraphADT is implemented with an incompatible signature in class AdjacancyListGraph.
При ближайшем рассмотрении стало очевидно, что AS3 не нравятся различные типы параметров из разных классов Graph newNode: Node
из Graph и newNode: AwareNode
из AdjacancyListGraph
Однако я не понимаю, почему это может быть проблемой, поскольку AwareNode
является подклассом ] Узел
.
Могу ли я заставить свой код работать, сохраняя при этом целостность кода?