请教:为什么在构造方法中不能一起使用this()和super这样,感谢
解决方案 »
- Java中的gui设计问题,想设计一个界面,左面显示一列按钮,右面是界面
- set的contains方法???
- 线程问题
- -128转化为2进制数?
- 请问Window2000中如何使用java命令?
- 初学者的几个JAVA问题
- 一个有关JOptionPane.showInputDialog的问题?
- 这个程序怎么不对!
- 记得在一本书上看到有一个文件可以改变swing的默认ui外观!!--那位大侠提醒一下!!
- java核心技术卷1里,代理的那章节看不懂。
- 有没有在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必须是子类构造方法中的头一条语句。