//继承的类,子类会调用父类无参的构造函数。从底层开始,一个父类,一个父类的调用;
//1.构造函数继承的时候,先调用基类的构造函数方法,再调用自己的构造函数方法;
//2.子类构造函数可以继承父类不同参数个数的构造函数;
//
1、构造函数不继承,派生类会自动调用基类构造函数。
2、若类内没有定义构造函数,系统会自动隐式生成一个不带参数的构造函数,比如定义一个类: public class A { } 可以理解为它已经存在一个如下的构造函数 public class A { public A() { } } 3、派生类构造函数自动调用基类的不带参数的构造函数,注意下面的格式 public class B:A { public B() { } } 相当于 public class B:A { public B():base() { } }4、基类中带参数的构造函数必须显式调用,比如: public class A { public A() { } public A(string str) { } } public class B:A { public B():base("aaa") { } }
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);
}
}
//C#继承构造函数实现及调用
public class MyClass3 : MyClass2
{
public MyClass3()
{
Console.WriteLine("MyClass3:默认构造函数");
}
public MyClass3(int a, int b)
{
Console.WriteLine("MyClass3带参构造:a={0}, b={1}.", a, b);
}
}
#region another
class Class4
{
public Class4(string a, string b)
{
Console.WriteLine("Class4 2个参数的构造函数,a={0},b={1}", a, b);
}
}
class Class5 : Class4
{
public Class5()
: base("class5_a", "class5_b")
{
Console.WriteLine("Class5无参构造函数 继承自Class1的被调用");
}
}
//class Test
//{
// static void Main(string[] args)
// {
// Class2 class2 = new Class2();
// }
//}
#endregion
//public class runMyApp
//{
// static void Main()
// {
// MyClass3 my = new MyClass3(3, 4);
// Console.WriteLine();
// }
//}
class Program
{
static void Main(string[] args)
{
MyClass3 my = new MyClass3(3, 4);
Console.WriteLine();
Console.ReadLine();
Class5 mine = new Class5();
Console.ReadLine();
}
}