Java与C#的构造函数执行顺序的不同之处

发表于:2007-06-11来源:作者:点击数: 标签:
Java:先执行父类的构造函数,然后是引用对象的构造函数(必须有new声明实际类型),然后是自己的构造函数。 public class Test { public static void main(String[] args) { Child child = new Child(); } } class Parent { Parent() { System.out.println(

Java:先执行父类的构造函数,然后是引用对象的构造函数(必须有new声明实际类型),然后是自己的构造函数。

public class Test

{

public static void main(String[] args)

{

Child child = new Child();

}

}

class Parent

{

Parent()

{

System.out.println("to construct Parent.");

}

}

class Child extends Parent

{

Child()

{

System.out.println("to construct Child.");

}

Delegatee delegatee = new Delegatee();

}

class Delegatee

{

Delegatee()

{

System.out.println("to construct Delegatee.");

}

}

结果是:

to construct Parent. 

to construct Delegatee.

to construct Child.

而C#的构造函数执行顺序是:先引用对象,在父类,再子类。

using System;

namespace ConsoleApplication1{

public class Test

{

public static void Main(String[] args)

{

Child child = new Child();

}

}

class Parent

{

public Parent()

{

Console.WriteLine("to construct parent");

}

}

class Child : Parent

{

public Child()

{

Console.WriteLine("to construct Child.");

}

Delegatee delegatee = new Delegatee();

}

class Delegatee

{

public Delegatee()

{

Console.WriteLine("to construct Delegatee.");

}

}

}

结果是:

to construct Delegatee. 

to construct Child.

to construct Parent.

总结:被依赖的先构造,依赖于人的后构造。Java 是跨层依赖优先于同层依赖构造,而C#是同层依赖优先于跨层依赖。

【相关文章】

  • C#和Visual Basic渐行渐远之匿名类型
  • 开发应用时如何利用C#自定义属性
  • 通过用Javap反汇编来帮你理解Java特性
【责任编辑:火凤凰 TEL:(010)68476606-8007】


原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
...