加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 实现接口的返回方法类型

发布时间:2020-12-15 08:38:07 所属栏目:Java 来源:网络整理
导读:我很想知道处理实现接口的返回类型方法的最佳实践/ SE约定是什么.具体来说,假设我们正在实现一个简单的树,接口如下: public interface ITreeNode { public ITreeNode getLeftChild(); public ITreeNode getRightChild(); public ITreeNode getParent();} 我
我很想知道处理实现接口的返回类型方法的最佳实践/ SE约定是什么.具体来说,假设我们正在实现一个简单的树,接口如下:

public interface ITreeNode {
    public ITreeNode getLeftChild();
    public ITreeNode getRightChild();
    public ITreeNode getParent();
}

我们有一个实现它的类TreeNode:

public class TreeNode implements ITreeNode {
    private TreeNode LeftChild,RightChild,Parent;
    @Override
    public ITreeNode getLeftChild() {
        return this.LeftChild;
    }

    @Override
    public ITreeNode getRightChild() {
        return this.RightChild;
    }

    @Override
    public ITreeNode getParent() {
        return this.Parent;
    }
}

我的问题是..各个实现方法的返回类型应该是ITreeNode还是TreeNode,以及原因.

Eclipse自动填充TreeNode的方法,返回类型为ITreeNode.但是,即使使用@Override标志,将其更改为TreeNode也不会导致任何错误或警告.

解决方法

从Java 5开始,重写的方法可以返回超类中提到的返回类型的接口/类的任何子类.除非特别要求,否则我将坚持返回接口(这主要发生在重构客户端已经在使用特定实现类的旧代码时,而我们现在正在重构它以形成类层次结构).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读