麻烦解释一下这个java程序的执行流程,详细一点,谢谢!

classA{publicA(){init();}publicvoidinit(){}}publicclassBextendsA{inti;ints=1;publicvo... class A {
public A() {
init();
}

public void init() {

}
}

public class B extends A {
int i;
int s=1;

public void init(){
i = 100;
s = 100;
}

public void println() {
System.out.println(i);
System.out.println(s);
}

public static void main(String[] arg) {
new B().println();
}
}
展开
 我来答
梅琦莉9a
2011-05-04 · TA获得超过231个赞
知道小有建树答主
回答量:274
采纳率:100%
帮助的人:241万
展开全部
类的实例化过程:
1。首先执行父类的静态初始化块、静态属性定义,执行顺序与源代码书写顺序相同。

2。然后执行子类的静态初始化块、静态属性定义,执行顺序与源代码书写顺序相同。

3。执行父类的普通初始化块、普通属性定义、构造函数,它们执行的顺序为,先执行普通初始化块、普通属性定义,执行顺序与源代码书写顺序相同。然后再执行构造函数。

4。执行子类的普通初始化块、普通属性定义、构造函数,它们执行的顺序为,先执行普通初始化块、普通属性定义,执行顺序与源代码书写顺序相同。然后再执行构造函数。

5。注意初始化时的方法重写的情况。

6。以上执行的理解:当系统在第一次使用某个类时,将会加载并初始化它,在类的准备阶段,系统将会为该类的类属性分配内存空间,并指定默认默认值。初始化后,系统将在堆内存为这个类分配一块内存空间。当创建第二个此类的对象时,因为它已经存在堆内存中,所以不再需要对这个类进行初始化。
百度网友9174666d0
2011-05-04 · TA获得超过336个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:188万
展开全部
new B时 会先进父类的构造函数 执行init方法 而B又重写了父类的init方法则此时 i = 100,s =100
执行完init方法后 再走B中的成员 此时赋值s=1

而后调用B类中的println方法 打印i 和S的值 打印出 100 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzxcwang
2011-05-04 · TA获得超过634个赞
知道答主
回答量:194
采纳率:0%
帮助的人:98.3万
展开全部
入口为main()
创建了一个B对象
执行class B 中的println()
追问
这个不用你说,它的输出结果是
100
1

为什么,请解释说明,并列出程序的执行流程,分就给你了!
追答
程序执行的时候会递归调用父类的构造方法,每个类都有一个默认的super(),当B调用A的构造方法时,A的构造方法中制定了init(),B中对init()方法进行了重载,此时i=100,s=100,然后会到B中 定义成员变量s=1, 然后执行println() 输出 100 1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式