请教:为什么在构造方法中不能一起使用this()和super这样,感谢
解决方案 »
- 关于EDU.oswego.cs.dl.util.concurrent包中线程队列的问题
- jtable 中如何插入 checkbox ,(在DefaultTableModel中)---------------------------------------小问题,急。。。高分诶,大侠们
- Java数据结构链表的问题
- 快来帮忙:Math.floor()用来干什么????
- 文本文件导入sqlserver
- 请大虾指教,如何监控文件系统的变化?
- Exception in thread "main" java.lang.NoClassDefFoundError :~~ 。怎么解决?
- 请问如何将一个字符串加密?
- 有谁知道ant做什么用的,为什么要用它?(高分)
- 关于数组的问题希望大牛给小白解答一下
- 有没有在java里用类来封装JDBC访问数据库的例子,大家贡献一个看看?
- 继承DefaultTableModel,实现了表的排序,但是由于该模型中的数据可以更新,最终导致表模型中的数据错乱,请高手指教
因为this函数是调用当前类的函数,而super是调用父类的函数,倘若两个构造函数一样,调用完this函数后,调用当前类的函数,在被调用的函数中已有super函数了,所以那个另外的super函数没有什莫意义,只能这样说了
是这样的道理。
{ /**
* @param args
*/
public static void main(String[] args)
{
T t1=new T(5);
T t2=new T(6);
System.out.println("t1.t="+t1.t);
System.out.println("t2.t="+t2.t);
System.out.println();
SubT st1 = new SubT(5,6);
SubT st2=new SubT();
System.out.println("st1.t="+st1.t);
System.out.println("st1.st="+st1.st);
System.out.println("st2.t="+st2.t);
System.out.println("st2.t="+st2.st); }}class T{
int t;
T(int t){
this.t=t;
}
T(){
this(0);
}
}class SubT extends T{
// int t;
int st;
SubT(int t,int st){
super(t);
this.st=st;
}
SubT(){
this(8,9);
}
}
运行结果是:
t1.t=5
t2.t=6st1.t=0
st1.st=6
st2.t=0
st2.t=9在SubT的构造方法中super和this就都用了。
如果在子类中注释的那句加上,
那运行结果就是:
t1.t=5
t2.t=6st1.t=0
st1.st=6
st2.t=0
st2.t=9这就说明了this只对当前类对象,而super是对父类对象
子类不能继承父类的构造方法,因此,子类如果想使用父类的构造方法必须在子类的构造方法中使用关键字super 来表示,并且super必须是子类构造方法中的头一条语句。