多态性无法正常工作

ark*_*ark 1 java

我有一个名为Dictionary的接口,它有一个方法insert().这个接口是由类实现的BSTree,但我也有一个类AVLTree是子类BSTree.AVLTree重新定义insert()它以满足它的需要.现在,如果我输入以下代码:

Dictionary data=new AVLTree();
data.insert();
Run Code Online (Sandbox Code Playgroud)

有一个问题,因为insert()被调用的方法BSTree不是AVLTree.为什么多态性不在这里?什么是适当的解决方案,保留多态性的原则?

Jon*_*eet 6

当你说AVLTree"重新定义"插入时,你究竟是什么意思?它必须覆盖该方法,这意味着具有完全相同的签名(模数方差).

你能在BSTree和AVLTree中发布insert()的签名吗?

如果在AVLTree中应用@Override注释(假设适当的最新JDK),如果没有正确的签名,则应该收到警告/错误.