请教一个java程序问题??

来源:百度知道 编辑:UC知道 时间:2024/06/18 00:06:13
class Parent {

Parent() {
System.out.println("parent1");
}
Parent(int i)
{
System.out.println("parent2");
}

}

public class ex11 extends Parent
{
ex11()
{
System.out.println("child1");
}
ex11(int i)
{
System.out.println("child2");
}
public static void main(String args[])
{
ex11 child1=new ex11();
ex11 child2=new ex11(2);
}

}
为什么它运行输出是
parent1
child1
parent1
child2
我以为是:
child1
child2
高手指教,谢谢
那再请教一下为什么父类中的
ex11(int i)
{
System.out.println("child2");
}
这个方法没有调用呢??

是这样的,确切的说,任何类构造之前,先会隐式地调用父类的默认(无参数)构造函数,所以会有上面的结果,既然是调用默认构造函数,那么构造方法Parent(int i) 就不会被子类隐式地调用了。

构造方法是依次从父类到子类一层一层调用的哈~~~

在子类构造方法调用之前,一定先调用了父类的构造方法。。

你的ex11扩展自Parent类 所以在调用ex11的构造函数的时候,会首先调用父类的构造函数

任何类构造之前,先会隐式调用父类的构造函数,所以说最先调用的构造函数应该是Object的 因为他是所有类的父类

你可以使用super()显式调用父类构造函数

你应该看看最基础的 继承的例子!~