日期:2014-05-20  浏览次数:20816 次

关于this和super的问题
同时调用this和suoper(带参数的)的构造函数的问题。具体实例,请看下面的代码,在红色的部分。
编译时会发现错误,“this语言必须位于第一列。”
但当还下this和super的顺序后,编译时也会发现错误,“super语言必须位于第一列。”
这时候该怎么解决这个问题啊?望高手留意。


class SuperClass {
public int x;

public SuperClass(){
x = 23;
}

public SuperClass(int x) {
this.x = x;
}
}

class SubClass extends SuperClass {
public int y;



public SubClass() {
// super(46);
//super();
y = 12;
}
public SubClass(int y) {
super(46);
this.y = y;
}

public SubClass(int x,int y) {
super(x);
this(y);
}
}

public class TestSuper {
public static void main(String[] args) {
SubClass ss = new SubClass();
SubClass ss2 = new SubClass(1,2);
System.out.println(ss2.x + " " + ss2.y);
}
}

------解决方案--------------------
Java code
 
public SubClass(int y) {
super(46);
this.y = y;
}

public SubClass(int x,int y) {
super(x);
this(y);
}
}


你执行了super(x);又执行super(46);前面的super(x);不就当没执行了吗
所以一般如果又要this,又要super的时候,就把super放在用this调用的构造函数里