溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中的類02:構(gòu)造對(duì)象

發(fā)布時(shí)間:2020-07-04 13:06:24 來(lái)源:網(wǎng)絡(luò) 閱讀:397 作者:mista 欄目:編程語(yǔ)言

1:構(gòu)造方法的可訪問(wèn)性

構(gòu)造方法可以是共有的或私有的。


2:默認(rèn)構(gòu)造方法

默認(rèn)構(gòu)造方法就是不帶參數(shù)的構(gòu)造方法。

如果沒(méi)有為類添加任何構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)生成一個(gè)隱藏的默認(rèn)構(gòu)造方法;但如果用戶添加了任意一個(gè)構(gòu)造方法,系統(tǒng)就不會(huì)自動(dòng)生成默認(rèn)的構(gòu)造方法了。也就是說(shuō),如果用戶為類添加了自己的定義的構(gòu)造方法,那么就只能使用用戶定義的這些構(gòu)造方法來(lái)生成對(duì)象了。


3:構(gòu)造方法調(diào)用構(gòu)造方法

格式如下:

構(gòu)造方法名(參數(shù)列表) : this(參數(shù)列表)

{

    方法體

}

舉例:

class DerivedClass
{
    public DerivedClass() : this(100)
    {
        Console.WriteLine("Derived Class's Default Constructor");
    }

    public DerivedClass(int i)
    {
        Console.WriteLine("Derived Class's Constructor with Param: {0}", i);
    }
}

和Java的區(qū)別

Java中,構(gòu)造方法調(diào)用另一個(gè)構(gòu)造方法也是使用this(參數(shù))的方法,但Java是將其作為一條語(yǔ)句放在方法體中的,而且這條this語(yǔ)句還必須是方法體的第一條語(yǔ)句。


4:在繼承結(jié)構(gòu)中,父類對(duì)象的生成

和C++、Java一樣,如果有繼承結(jié)構(gòu),那么在生成子類對(duì)象時(shí)會(huì)先生成父類對(duì)象。

默認(rèn)情況下,在執(zhí)行子類的構(gòu)造方式(所有的構(gòu)造方法)時(shí)會(huì)先自動(dòng)調(diào)用父類的默認(rèn)構(gòu)造方法以生產(chǎn)父類對(duì)象,所以,如果在子類的構(gòu)造方法中沒(méi)有特別說(shuō)明,而父類又沒(méi)有默認(rèn)的構(gòu)造方法,系統(tǒng)會(huì)提示出錯(cuò)。

一般情況下,我們會(huì)在子類的構(gòu)造方法中明確的告訴系統(tǒng),子類的構(gòu)造方法要調(diào)用父類的哪個(gè)構(gòu)造方法。

格式如下:

子類的構(gòu)造方法名 : base(參數(shù)列表)

{

方法體

}

這樣,在執(zhí)行這個(gè)構(gòu)造方法之前,系統(tǒng)會(huì)先調(diào)用父類的相應(yīng)的構(gòu)造方法。

與Java的區(qū)別:Java中使用的關(guān)鍵字是super,而且也是作為語(yǔ)句放置于方法體的開(kāi)頭。



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI