亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#中子類調(diào)用父類的實(shí)現(xiàn)方法

 更新時(shí)間:2014年09月04日 15:34:38   投稿:shichen2014  
這篇文章主要介紹了C#中子類調(diào)用父類的實(shí)現(xiàn)方法,通過實(shí)例逐步分析了類中初始化構(gòu)造函數(shù)的執(zhí)行順序問題,有助于加深對(duì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)的理解,需要的朋友可以參考下

本文實(shí)例講述了C#中實(shí)現(xiàn)子類調(diào)用父類的方法,分享給大家供大家參考之用。具體方法如下:

一、通過子類無參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例

創(chuàng)建父類Person和子類Student。

public class Person
{
    public Person()
    {
      Console.WriteLine("我是人");
    }
}
public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是學(xué)生");
    }
}

在客戶端通過子類無參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例。

class Program
{
    static void Main(string[] args)
    {
      Student student = new Student();
      Console.ReadKey();
    }
}

輸出結(jié)果:

我是人
我是學(xué)生

可見:通過調(diào)用子類無參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例,會(huì)默認(rèn)調(diào)用父類無參構(gòu)造函數(shù)。

如果把父類的無參構(gòu)造函數(shù)去掉,會(huì)怎樣呢?
--結(jié)果會(huì)報(bào)"Person不包含0個(gè)參數(shù)的構(gòu)造函數(shù)"錯(cuò)。

二、通過子類有參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例

再同時(shí)為子類和父類添加有參構(gòu)造函數(shù)。

public class Person
{
    public Person()
    {
      Console.WriteLine("我是人");
    }
    public Person(string name)
    {
      Console.WriteLine("我是人,我的名字叫{0}", name);
    }
}
public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是學(xué)生");
    }
    public Student(string name)
    {
      Console.WriteLine("我是學(xué)生,我的名字叫{0}", name);
    }
}

在客戶端通過子類有參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例。

Student student = new Student("小明");
Console.ReadKey();

輸出結(jié)果:

我是人
我是學(xué)生,我的名字叫小明

可見:通過調(diào)用子類有參構(gòu)造函數(shù),同樣默認(rèn)會(huì)調(diào)用父類無參構(gòu)造函數(shù)。

三、在子類中明確指出調(diào)用哪個(gè)父類構(gòu)造函數(shù)

以上,默認(rèn)調(diào)用了父類的無參構(gòu)造函數(shù),但如何調(diào)用父類的有參構(gòu)造函數(shù)呢?
--在子類中使用base

在子類Student中的有參構(gòu)造函數(shù)中使用base,明確調(diào)用父類有參構(gòu)造函數(shù)。

public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是學(xué)生");
    }
    public Student(string name)
      : base(name)
    {
      Console.WriteLine("我是學(xué)生,我的名字叫{0}", name);
    }
}

客戶端

Student student = new Student("小明");
Console.ReadKey();

輸出結(jié)果:

我是人,我的名字叫小明
我是學(xué)生,我的名字叫小明

四、通過子類設(shè)置父類的公共屬性

在父類Person中增加一個(gè)Name公共屬性,并在父類的構(gòu)造函數(shù)中對(duì)Name屬性賦值。

public class Person
{
    public string Name { get; set; }
    public Person()
    {
      Console.WriteLine("我是人");
    }
    public Person(string name)
    {
      this.Name = name;
      Console.WriteLine("我是人,我的名字叫{0}", name);
    }
}

在客戶端:

Student student = new Student("小明");
Console.WriteLine("子類獲取父類的Name屬性值為{0}", student.Name);
Console.ReadKey();  

輸出結(jié)果:

我是人,我的名字叫小明
我是學(xué)生,我的名字叫小明 
子類獲取父類的Name屬性值為小明 

以上代碼的執(zhí)行路徑是:

→調(diào)用子類有參構(gòu)造函數(shù),并把該參數(shù)傳值給父類有參構(gòu)造函數(shù)
→調(diào)用父類有參構(gòu)造函數(shù),并給父類公共屬性Name賦值
→子類實(shí)例調(diào)用父類的公共屬性

其實(shí),以上的做法在分層架構(gòu)設(shè)計(jì)中已經(jīng)得到了很好的使用。在分層架構(gòu)中,通常會(huì)為所有的Repository創(chuàng)建一個(gè)基類,在基類中設(shè)計(jì)一個(gè)代表當(dāng)前Repository的屬性,并在基類的構(gòu)造函數(shù)中為該屬性賦值;最終,在創(chuàng)建子類Repository實(shí)例時(shí),在為基類的、代表當(dāng)前Repository的公共屬性賦值。

在子類中,當(dāng)父類通過base拿到子類的參數(shù)時(shí),還可以對(duì)該參數(shù)做一些處理,比如代表父類的base把從子類拿到的參數(shù)轉(zhuǎn)換成大寫。

public class Student : Person
{
    public Student()
    {
      Console.WriteLine("我是學(xué)生");
    }
    public Student(string name)
      : base(ConvertToUpper(name))
    {
      Console.WriteLine("我是學(xué)生,我的名字叫{0}", name);
    }
    private static string ConvertToUpper(string name)
    {
      return name.ToUpper();
    }
}

輸出結(jié)果:

我是人,我的名字叫DARREN
我是學(xué)生,我的名字叫darren
子類獲取父類的Name屬性值為DARREN

總結(jié):

①.通過子類無參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例,會(huì)默認(rèn)調(diào)用父類的無參構(gòu)造函數(shù)
②.通過子類有參構(gòu)造函數(shù)創(chuàng)建子類實(shí)例,也會(huì)默認(rèn)調(diào)用父類的無參構(gòu)造函數(shù)
③.在子類構(gòu)造函數(shù)中通過base關(guān)鍵字指明父類構(gòu)造函數(shù),當(dāng)通過子類構(gòu)造函數(shù)創(chuàng)建實(shí)例,會(huì)調(diào)用指明的、父類的構(gòu)造函數(shù)
④.父類的公共屬性可以通過子類來賦值,子類也可以獲取到父類的公共屬性

相信通過本文上述實(shí)例的分析,可以加深大家對(duì)C#類的初始化與繼承的理解。希望本文所述對(duì)大家進(jìn)一步的學(xué)習(xí)C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論