在c#中父类和子类中构造函数的调用顺序

2024-12-04 14:25:56
推荐回答(2个)
回答1:

类层层派生,在实例化的时候构造函数的调用顺序是怎样的? --从顶层基类开始向子类方向顺序调用无参构造.
默认构造(无参构造)和带参构造什么时候调用?--默认将从顶层父类的默认构造一直调用到当前类的默认构造.
下面是示例:
/**//*--===------------------------------------------===---
若希望类能够有派生类,必须为其实现默认构造函数.
若类没有实现带参构造,编译器将自动创建默认构造函数.
若类实现了带参构造,则编译器不会自动生成默认构造.
--===------------------------------------------===---*/
using System;
namespace xumh
{
public class MyClass
{
public MyClass()
{
Console.WriteLine("MyClass:默认构造函数");
}
public MyClass(int a, int b)
{
Console.WriteLine("MyClass带参构造:a={0}, b={1}.", a, b);
}
}

public class MyClass2 : MyClass
{
public MyClass2()
{
Console.WriteLine("MyClass2:默认构造函数");
}
public MyClass2(int a, int b)
{
Console.WriteLine("MyClass2带参构造:a={0}, b={1}.", a, b);
}
}
public class MyClass3 : MyClass2
{
public MyClass3()
{
Console.WriteLine("MyClass3:默认构造函数");
}
public MyClass3(int a, int b)
{
Console.WriteLine("MyClass3带参构造:a={0}, b={1}.", a, b);
}
}
public class runMyApp
{
static void Main()
{
MyClass3 my = new MyClass3(3,4);
}
}
}
/**//*--===------------------------------------------===---
输出如下:
MyClass:默认构造函数
MyClass2:默认构造函数
MyClass3带参构造:a=3, b=4.
--===------------------------------------------===---*/
希望可以帮到你,在别处看到的

回答2:

这种东西还用问啊,建议你自己写一个debug一下就知道了,两分钟的事,而且还印象深刻