class A{
int i;
A(){
System.out.print("A");
}
}
class B extends A{
int j;
B(){
System.out.print("B");
}
}
对于以上的简单代码段,当使用new B()构造B的对象时,会先构造A的对象,通过先初始化i,然后在调用A的构造方法,然后在初始化j,调用B的构造方法,但是
new B();语句的执行入口在哪?即当java执行到这句指令时是怎么操作的?是先进入B的构造方法,通过调用super()开始构造A,还是其他的途径?此外,B()的第一句super()或者super(参数)只是简单的通知编译器构造A对象时用A中的哪个构造方法嘛?
有点困惑,请知道的朋友赐教,谢谢
int i;
A(){
System.out.print("A");
}
}
class B extends A{
int j;
B(){
System.out.print("B");
}
}
对于以上的简单代码段,当使用new B()构造B的对象时,会先构造A的对象,通过先初始化i,然后在调用A的构造方法,然后在初始化j,调用B的构造方法,但是
new B();语句的执行入口在哪?即当java执行到这句指令时是怎么操作的?是先进入B的构造方法,通过调用super()开始构造A,还是其他的途径?此外,B()的第一句super()或者super(参数)只是简单的通知编译器构造A对象时用A中的哪个构造方法嘛?
有点困惑,请知道的朋友赐教,谢谢
2.构造器中是否有this()有则调用
3.构造器中是否有super()有则调用并且当父类/父类的父类/直到Object(步骤1.2.3)的都构造完后在接着往下执行
4.显示初始化private String str1 = "s1";
5.构造器中的初始化B(String str){str2 = str;}