C#子類的建構式可以指定為首先呼叫其他的(父類的或者同級的)建構式
如果沒有指定,子類的建構式默認首先呼叫父類的無參建構式
例如
public B() //首先默認呼叫父類的無參建構式
public B() : base(16) //B的無參建構式。首先呼叫父類的帶一個int引數的建構式
public B() : this("string") //B的無參建構式。首先呼叫同級的帶一個字串引數的建構式
//控制臺程式
//以下代碼在VS2010下除錯通過
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test1
{
class A //定義class A
{
public A()
{
Console.WriteLine("我是A的無參建構式");
}
public A(int i)
{
Console.WriteLine("我是A的int建構式");
}
public A(String s)
{
Console.WriteLine("我是A的String建構式");
}
}
class B : A //class從class繼承
{
public B() : base(16) //首先呼叫父類的建構式,從引數分析,應該呼叫A(int i)
{
Console.WriteLine("我是B的無參建構式");
}
public B(int i) : this("string") //首先呼叫同級的建構式,從引數分析,應該呼叫B(String s)
{
Console.WriteLine("我是B的int建構式");
}
public B(String s)
{
Console.WriteLine("我是B的String建構式");
}
}
class Program
{
static void Main(string[] args)
{
A a1 = new A();
Console.WriteLine("\n");
A a2 = new A(12);
Console.WriteLine("\n");
A a3 = new A("string");
Console.WriteLine("\n----------------\n");
B b1 = new B();
Console.WriteLine("\n");
B b2 = new B("string");
Console.WriteLine("\n");
B b3 = new B(12);
Console.Read();
}
}
}
以下為程式輸出:
我是A的無參建構式
我是A的int建構式
我是A的String建構式
----------------
我是A的int建構式
我是B的無參建構式
我是A的無參建構式
我是B的String建構式
我是B的int建構式
我是A的無參建構式
我是B的String建構式
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/28747.html
標籤:基礎類
