6
回答
java如何继承父类中的自引用结构?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
如现有一个类Node表示二叉树的节点:
public class Node<T>{

	protected T data;  
	protected Node<T> parent,left,right;

...(各种方法)
}

想要写一个类R_BNode继承自Node,表示红黑二叉树节点,若只加入一个属性color和相应的方法,那么Node原有的parent、left、right、get方法、set方法等继承到R_BNode依然是Node类型;若不让R_BNode继承Node,又发现各个方法除了类型名"R_BNode"与"Node"之外没有任何差别。

请问遇到这种情况应该如何处理呢?

本人初学java,希望各位大神指点迷津!



举报
Bo-
发帖于3年前 6回/407阅
共有6个答案 最后回答: 3年前

类R_BNode继承自Node,那么R_BNode是Node类型的子类,所以你的担心是什么?你加一个color属性,然后定义它相应的set/get方法如下设置就好了。


--- 共有 1 条评论 ---
Bo-问题是,B_RNode继承自Node的方法比如getParent的返回值是Node不是B_RNode 3年前 回复

java 用节点,树什么的.. 太吃力. 蹩脚..  没什么实际意义.

因为没有指针这个概念...  

--- 共有 4 条评论 ---
小郭一号回复 @Bo- : 纯属放屁,支持指针的语言一只左手就能数过来,其他几十种语言都“太吃力,蹩脚,没什么实际意义”?引用和指针的作用都搞不清楚还说什么不要为了学习而学习,你还是再学习学习吧。 3年前 回复
Bo-回复 @0-day : 受教了!那我就把数据结构和java分开学吧 3年前 回复
calvary回复 @Bo- : 不管学什么语言.重在解决实际面对的问题. 不要为了学习而学习.. 如果你只是要实现这种数据结构. 用c语言会更简洁明了..而且高效.. 3年前 回复
Bo-那我应该怎么实现这样的数据结构呢? 3年前 回复

package node;

public class Node<T, E extends Node<T,E>>{
    protected T data; 
    protected E parent,left,right;
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
    public E getParent() {
        return parent;
    }
    public void setParent(E parent) {
        this.parent = parent;
    }
    public E getLeft() {
        return left;
    }
    public void setLeft(E left) {
        this.left = left;
    }
    public E getRight() {
        return right;
    }
    public void setRight(E right) {
        this.right = right;
    }
}

package node;

public class R_BNode<T> extends Node<T, R_BNode<T>>{
	private int color;

	public int getColor() {
		return color;
	}

	public void setColor(int color) {
		this.color = color;
	}
}



很丑

--- 共有 1 条评论 ---
Bo-这样也可以啊~长知识了! 3年前 回复
parent、left、right这几个类型是可以运行时决定的,在R_BNode里面写类似left=new R_BNode()这样的代码,left的类型实际上就是R_BNode,不过使用时要做类型转换。
顶部