两种办法:class cNode<T>{ T data; cNode Lchild,Rchild; public T getData(){ return data; } public void setData(T data){ this.data = data; } }public class testNode{ public static void main(String arg[]){ cNode<Integer> a = new cNode<Integer>(); a.setData(8888); System.out.println(a.getData()); cNode<String> b = new cNode<String>(); b.setData("华夏英魂"); System.out.println(b.getData()); } }class cNode{ Object data; cNode Lchild,Rchild; public Object getData(){ return data; } public void setData(Object data){ this.data = data; } } public class testNode{ public static void main(String arg[]){ cNode a = new cNode(); a.setData(8888); System.out.println(a.getData()); cNode b = new cNode(); b.setData("华夏英魂"); System.out.println(b.getData()); } }
子类重写父类的方法叫重写,
重写的要求是:
重写(Override)
重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写!
T data;
cNode Lchild,Rchild; public T getData(){
return data;
}
public void setData(T data){
this.data = data;
}
}public class testNode{
public static void main(String arg[]){
cNode<Integer> a = new cNode<Integer>();
a.setData(8888);
System.out.println(a.getData());
cNode<String> b = new cNode<String>();
b.setData("华夏英魂");
System.out.println(b.getData());
}
}class cNode{
Object data;
cNode Lchild,Rchild; public Object getData(){
return data;
}
public void setData(Object data){
this.data = data;
}
}
public class testNode{
public static void main(String arg[]){
cNode a = new cNode();
a.setData(8888);
System.out.println(a.getData());
cNode b = new cNode();
b.setData("华夏英魂");
System.out.println(b.getData());
}
}
直接改名、你这是犯了语法错误,java从不会教你子类和父类有同名的方法且非重载、
方法重载知识根据参数列表,不包括返回值。要实现你说的功能,就像1L说的,需要用泛型class BiNode<T extends BiNode, K>{ //T extends BiNode限定T的类型边界
private K data;
private T Lchild,Rchild; public K getData(){
return data;
}
}class AvlNode<T extends AvlNode, K> extends BiNode<T, K>{
//这里AvlNode继承了BiNode的属性, Lchild, Rchlid和data
//Lchild, Rchlid是AvlNode类型的
private int BalanceFactor; //这里可以添加AvlNode自己的属性,例如节点的平衡因子
}
注意,有些中文书是这样的译的:overload(过载);override(重载).
如果你确实想能在测试类中能同时调用父类、子类中的getDate()。那就吧getDate()定义为静态,子类的也定义为静态(这时,子类的getDate()会将父类的getDate()隐藏,而不是重写,静态方法时不能重写的)
静态方法时属于类的,可以直接通过类类调用它。或者创建一个引用,指向哪都行,只要引用是父类的,就能调用父类的getDate();引用是子类的,就能调用子类的getDate()