首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java继承最大化重用

Java继承最大化重用
EN

Stack Overflow用户
提问于 2013-06-27 03:52:53
回答 1查看 108关注 0票数 1

在下面的示例中,TreeNode是超类,BinaryNode是子类。

代码语言:javascript
复制
public class TreeNode {
    private int data;
    private TreeNode parent;
    private List<TreeNode> children;

    TreeNode() {
        this.data = 0;
        this.parent = null;
        this.children = new ArrayList<TreeNode>();
    }
}

在子类中,每个节点只有两个子节点。我写的内容如下。

我应该如何编写成员字段和构造函数来最好地使用超类,同时保持结构正确?

代码语言:javascript
复制
public class BinaryNode extends TreeNode {
//  int data;
//  BinaryNode parent;
    List<BinaryNode> children;

    BinaryNode() {
        super();
        children = new ArrayList<BinaryNode>(2);
    }
}

在构造函数BinaryNode()中,调用了super(),这对孩子有什么影响?

更重要的是,如果子类在某些字段上有特定的规则,比如这个示例中只有两个子类,那么如何在超类和子类中编写构造函数来最大化重用呢?

如果我在超类中有以下方法isLeaf(),而不是在子类中编写它。当我尝试在一个子类实例中使用它时,它能正常工作吗?

代码语言:javascript
复制
public boolean isLeaf() {
    if(this.children == null)
        return true;
    else
        return false;
}
EN

回答 1

Stack Overflow用户

发布于 2013-06-27 10:49:46

在超类中标记受保护的属性,子类应该可以访问它们:

代码语言:javascript
复制
public class TreeNode {
        protected int data;
        protected TreeNode parent;
        protected List<TreeNode> children;

    ...

    public boolean isLeaf() {
          if(this.children == null)
             return true;
          else
             return false;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17329237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档