当前位置:  开发笔记 > 编程语言 > 正文

多态性无法正常工作

如何解决《多态性无法正常工作》经验,为你挑选了1个好方法。

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

Dictionary data=new AVLTree();
data.insert();

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



1> Jon Skeet..:

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

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

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

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有