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#是同层依赖优先于跨层依赖。
【相关文章】
【责任编辑:
火凤凰 TEL:(010)68476606-8007】