| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 741 人关注过本帖
标题:大家来讨论一下执行的流程
只看楼主 加入收藏
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

这个帖子原来是JAVA版的 我感觉有意思转过来的 已经有人发了回答帖子 大家有兴趣可以看看
感谢Nicegirl


有能力的请解释哈!(可以把解释的内容写到语句的后面)

package ConsoleApplication1;

/**
* Class1 的摘要说明。
*/

class Egg
{
private Yolk y = new Yolk( );//四、构造内部类Egg.Yolk对象、调用其构造方法

protected class Yolk
{
public Yolk() { //十一、第二遍执行,打印Egg.Yolk(),返回BigEgg.Yolk
System.out.println( "Egg.Yolk()" ); //五、OK,无成员变量,执行方法体,打印Egg.Yolk()
} //六、返回Egg构造方法
public void f() { //十七、到这里打印Egg.Yolk().f();OK,返回main方法,执行完毕
System.out.println( "Egg.Yolk().f()" );
}
}

public Egg() { //三、执行构造方法体前初始化Egg类成员变量
System.out.println( "new Egg()" ); //七、执行方法体,打印new Egg(),父类构造方法执行完毕,返回子类BigEgg构造方法
}

public void insertYolk( Yolk yy ) { //十三、到这里了,赋下值,其实这步应该在子类中执行,只是子类中没有显式的写出继承的方法,
y = yy; //此处y是子类中的BigEgg.Yolk的引用变量,执行完毕,返回BigEgg()
}

public void g() { //十六、这里其实也是在子类中隐式存在的,注意,这里的BigEgg.Yolk类型的y只能通过继承的方法访问,因为继承的y成员变量
//是私有的
y.f(); //十七、这里调用的是BigEgg.Yolk的重写的f()方法
}
}

public class BigEgg extends Egg
{
public class Yolk extends Egg.Yolk
{
public Yolk() { //十、此类BigEgg.Yolk又是派生类,调用父类Egg.Yolk的构造方法
System.out.println( "BigEgg.Yolk()" ); //十二、执行方法体、打印BigEgg.Yolk(),返回BigEgg方法后继续执行insertYolk
//注意:这里方法被重写
}
public void f() {
System.out.println( "BigEgg.Yolk().f()" ); //十八、打印BigEgg.Yolk().f(),返回main方法,程序执行完毕
}
}

public BigEgg() { //二、发现是派生类,所以先调用父类构造方法
insertYolk( new Yolk() ); //八、执行子类方法体、调用已继承的父类方法insertYolk,然后传参,发现参数是构造器,调用构造方法
//九、构造内部类BigEgg.Yolk的对象,调用BigEgg.Yolk构造方法
} //十四、方法执行完毕,返回main函数

public static void main( String[] args)
{
Egg e = new BigEgg(); //一、类加载完毕,无静态成员变量,首先执行入口方法main,然后执行该语句
e.g(); //十五、调用已继承的方法g(),打印Egg.Yolk().f()
}
}


请复制到。NET2003下观看


此号自封于2006年11月30日
2006-08-22 09:13
快速回复:大家来讨论一下执行的流程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019830 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved