日期:2014-05-18  浏览次数:20696 次

JAVA类的初始化问题

class A
{
{
System.out.println("A类语句块");
}

public A()
{
System.out.println("A类无参构造函数");
}

public A(int i)
{
this();
System.out.println(i);
}
}

class B extends A
{
{
System.out.println("B类语句块");
}

public B()
{
super(10);
System.out.println("B类无参构造函数");
}
}


public class Test
{
public static void main(String[] args)
{
new B();
}
}


上面运行后有点问题,输出是:
A类语句块
A类无参构造函数
10
B类语句块
B类无参构造函数
但是跟我自己想得不一样,在A类的有参构造函数中this()怎么就没有调用他的无参构造函数呢。
------解决方案--------------------
进入B的构造方法,然后super(10),进入父类的有参数的构造方法里,调用无参数的构造,打印“A类语句块”、“A类无参构造函数”,然后“10”,然后构造B,打印“B类语句块”、“B类无参构造函数”
------解决方案--------------------
这就是重载,会根据参数的个数和类型去找相应的方法。