我正在尋找處理細微問題的清晰且正確的方法。 Technicaly是的,我可以簡單地忽略它,但這不是重點。通過繼承更改方法參數
我有一個BinaryTree類,它利用Node類型的對象。 BinaryTree類有一個方法addNode(Node n),它根據二叉樹的規則添加一個新節點
現在我想創建一個RedBlackTree類,該類使用RedBlackNode類型的對象(Node有一個額外的顏色字段)並從BinaryTree繼承。我不應該離開addNode方法,因爲它允許將正常的節點添加到RedBlackTree,導致錯誤。我可以像這樣超載的方法:
class RedBlackTree extends BinaryTree
{
public void addNode(RedBlackNode n)
{
...
}
}
但其他方法仍然是暴露的,理想情況下,它不應該是。 我可以覆蓋這樣的方法:
但隨後的方法仍然需要一個正常的節點作爲參數,並且理想地應該只接受RedBlackNode(當他試圖使用方法也可能混淆別人)。
我想要的是繼承addNode方法,使參數類型從Node更改爲RedBlackNode。我怎麼做?這甚至可能嗎?或者這是我的一個概念性問題?
爲什麼不簡單地使用泛型?我認爲這種情況是他們被添加到語言中的。 –
非常正確:class BinaryTree類RedBlackTree擴展了BinaryTree –
Ironcache