为什么this和super不能同时出现在一个构造函数里面?
class A
{
A()
{
System.out.println("A");
}
}
class B extends A
{
B()
{
// super(); //error
this(3);
System.out.println("B");
}
B(int x)
{
System.out.println("B2");
}
public static void main(String[] args)
{
B a=new B();
}
}
关于this,super不是很理解。。就像上面那个例子。
问1:不是每个构造函数默认第一条语句都是调用super么?反正默认也是加上,可是我加了super()以后反而会出错。。。不加没事。
问2:是不是所有构造函数里面第一条语句都会调用super?还是只要一个构造函数调用一个super()其它的就不在调用了?如果按照上面的运行。
我想是否应该是 先运行B()中默认的super(),这样,要先执行一次A()中的System语句,然后在回到B()中,继续运行this(3),在进入B(int x)
进入后在B(int x)中在默认运行super(),在回到B()中。。。那么输出应该是
A
A
B2
B
可是结果输出却是
A
B2
B
这好像说明super()只运行了一次。。那么是说this(3)中的super()没有运行么?
是不是不管子类有多少个构造方法,但调用super只调用一次?
谢谢,麻烦不忙时候讲讲