当前位置: 技术问答>java相关
关于程序再类里得执行顺序,我很菜,...送分.!!!!!
来源: 互联网 发布时间:2015-06-18
本文导语: class Egg2 { protected class Yolk { public Yolk() { System.out.println("Egg2.Yolk()"); } public void f() { System.out.println("Egg2.Yolk.f()"); } } private Yolk y = new Yolk(); public Egg2() { ...
class Egg2 {
protected class Yolk {
public Yolk() {
System.out.println("Egg2.Yolk()");
}
public void f() {
System.out.println("Egg2.Yolk.f()");
}
}
private Yolk y = new Yolk();
public Egg2() {
System.out.println("New Egg2()");
}
public static void main(String[] args) {
Egg2 e2 = new Egg2();
//e2.g();
}
} //
我用step看了顺序是这样?
为什么?,java到底是怎么执行的阿
1:main
2: Egg2 e2 = new Egg2();
3:public Egg2() {
4:private Yolk y = new Yolk()
5: public Yolk() {
6: System.out.println("Egg2.Yolk()");
7: private Yolk y = new Yolk();
8: System.out.println("New Egg2()");
9: Egg2 e2 = new Egg2();
为什么是这样的顺序?
protected class Yolk {
public Yolk() {
System.out.println("Egg2.Yolk()");
}
public void f() {
System.out.println("Egg2.Yolk.f()");
}
}
private Yolk y = new Yolk();
public Egg2() {
System.out.println("New Egg2()");
}
public static void main(String[] args) {
Egg2 e2 = new Egg2();
//e2.g();
}
} //
我用step看了顺序是这样?
为什么?,java到底是怎么执行的阿
1:main
2: Egg2 e2 = new Egg2();
3:public Egg2() {
4:private Yolk y = new Yolk()
5: public Yolk() {
6: System.out.println("Egg2.Yolk()");
7: private Yolk y = new Yolk();
8: System.out.println("New Egg2()");
9: Egg2 e2 = new Egg2();
为什么是这样的顺序?
|
怎么会不明白?
我给你每步都详细说一下!!!
1:main
//应用程序入口,必定第一个先(如果有)入口,
//接着执行main里面的内容
2: Egg2 e2 = new Egg2();
//实例化当前一个Egg2对象,实例化一个class对象时,
//首先执行的是符合实例的构造器(此处是Egg2()),
//在运行构造器之前,看看有无此类中的公共的变量定义
//(此处即private Yolk y = new Yolk())
3:public Egg2() {
//构造器(所上所说,如果class里面有几个构造器,
//那么执行的就是符合实例化时输入参数的那个)
//此时实际上构造器内部并未开始执行,它需要先判断类中有无
//公共的变量定义(见第2步说明)
4:private Yolk y = new Yolk()
//存在私有变量定义,则执行。
//此处实例化一个对象Yolk,Yolk是个内部类
//所有相关执行顺序同第二步时( Egg2 e2 = new Egg2();)
5: public Yolk() {
//构造器,此内部类中无公共变量定义,故直接执行构造器
6: System.out.println("Egg2.Yolk()");
//执行
7: private Yolk y = new Yolk();
//回到外部调用步骤所在,并非从新执行
//此时第3步的变量判断才算完成,再执行构造器方法
8: System.out.println("New Egg2()");
//构造器执行
9: Egg2 e2 = new Egg2();
//回到外部调用步骤所在,并非从新执行
//此时第2步的实例化才算完成,回到main(),继续执行下面的步骤
//例子中是退出系统
我给你每步都详细说一下!!!
1:main
//应用程序入口,必定第一个先(如果有)入口,
//接着执行main里面的内容
2: Egg2 e2 = new Egg2();
//实例化当前一个Egg2对象,实例化一个class对象时,
//首先执行的是符合实例的构造器(此处是Egg2()),
//在运行构造器之前,看看有无此类中的公共的变量定义
//(此处即private Yolk y = new Yolk())
3:public Egg2() {
//构造器(所上所说,如果class里面有几个构造器,
//那么执行的就是符合实例化时输入参数的那个)
//此时实际上构造器内部并未开始执行,它需要先判断类中有无
//公共的变量定义(见第2步说明)
4:private Yolk y = new Yolk()
//存在私有变量定义,则执行。
//此处实例化一个对象Yolk,Yolk是个内部类
//所有相关执行顺序同第二步时( Egg2 e2 = new Egg2();)
5: public Yolk() {
//构造器,此内部类中无公共变量定义,故直接执行构造器
6: System.out.println("Egg2.Yolk()");
//执行
7: private Yolk y = new Yolk();
//回到外部调用步骤所在,并非从新执行
//此时第3步的变量判断才算完成,再执行构造器方法
8: System.out.println("New Egg2()");
//构造器执行
9: Egg2 e2 = new Egg2();
//回到外部调用步骤所在,并非从新执行
//此时第2步的实例化才算完成,回到main(),继续执行下面的步骤
//例子中是退出系统
|
oop当然要有构造器啊。找本think in java的电子版看一下把。这个讲的很系统,很清楚。
|
也可以不用构建器的,系统会给一个默认的给你
|
我也建议你看一下thinking in java
public egg() {}的确是构造
你的问题都是最基本的知识,建议你多看看书吧
public egg() {}的确是构造
你的问题都是最基本的知识,建议你多看看书吧
|
执行顺序是这样的:
static数据初始化,例如:Static int i=2;
自动变量初始化,例如:int i;
指定变量初始化,例如:int i=2;
构建器初始化,也就是构造函数初始化。
搞清楚顺序就行了!
static数据初始化,例如:Static int i=2;
自动变量初始化,例如:int i;
指定变量初始化,例如:int i=2;
构建器初始化,也就是构造函数初始化。
搞清楚顺序就行了!
|
up
|
points