请教:为什么在构造方法中不能一起使用this()和super这样,感谢

J_NeedForSpeed 2006-11-10 08:15:20
请教:为什么在构造方法中不能一起使用this()和super这样,感谢
...全文
514 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
J_NeedForSpeed 2007-04-16
  • 打赏
  • 举报
回复
顶。
lanseliuying 2007-04-16
  • 打赏
  • 举报
回复
this出现在类的构造方法中,代表使用该构造方法所创建的对象。
子类不能继承父类的构造方法,因此,子类如果想使用父类的构造方法必须在子类的构造方法中使用关键字super 来表示,并且super必须是子类构造方法中的头一条语句。
yiyi2007 2007-04-16
  • 打赏
  • 举报
回复
package myTest;

public class Test12
{

/**
* @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=6

st1.t=0
st1.st=6
st2.t=0
st2.t=9

在SubT的构造方法中super和this就都用了。
如果在子类中注释的那句加上,
那运行结果就是:
t1.t=5
t2.t=6

st1.t=0
st1.st=6
st2.t=0
st2.t=9

这就说明了this只对当前类对象,而super是对父类对象
zhuyf333 2007-04-16
  • 打赏
  • 举报
回复
一起用有什么意义吗?
maco21 2007-04-16
  • 打赏
  • 举报
回复
mark
likgui 2007-04-16
  • 打赏
  • 举报
回复
关注
liujun999999 2007-04-16
  • 打赏
  • 举报
回复
把他们2个拉出去pk,谁赢了用谁
zhuzhen_2008 2006-11-11
  • 打赏
  • 举报
回复
this()或super()都必须写在构造函数的第一行,你怎么用两个
是这样的道理。
xun56789 2006-11-10
  • 打赏
  • 举报
回复
this()或super()都必须写在构造函数的第一行,你怎么用两个
fly2749 2006-11-10
  • 打赏
  • 举报
回复
今天刚看完教程,告诉你,不知说得对不对
因为this函数是调用当前类的函数,而super是调用父类的函数,倘若两个构造函数一样,调用完this函数后,调用当前类的函数,在被调用的函数中已有super函数了,所以那个另外的super函数没有什莫意义,只能这样说了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧