天天看點

黑馬程式員:面向對象中的繼承

---------------------- ASP.Net+Android+IOS開發、.Net教育訓練、期待與您交流! ----------------------

繼承:

為了解決代碼備援的問題,我們在面向對象中引入了繼承這個概念,把幾個類中重複出現的成員,單獨的拿出來封裝到一個類中,将這個類作為其它幾個類的父類。

那麼其它的幾個類就都能夠通路到父類中的成員。

比如說讓Student這個類繼承于Person這個類。

把Student這個類稱之為子類或者派生類。

把Person這個類稱之為父類或者基類。

在前面的筆記中我說了,一個類中有字段,屬性,方法,和構造函數。那麼當一個子類将繼承父類的時候,都可以把那些繼承過來呢?

下面是以個題目,通過這個題目來一一解釋子類到底字父類中繼承了什麼。

定義一個父類Person. 寫一個Reporter類, Reporter 打招呼的方法是說"大家好,我叫XX,,我的愛好是XXX。其中姓名要繼承自Person中的屬性

首先定義一個Person類,裡面有三個屬性,和三個個字段,一個自定義的構造函數

namespace 繼承
{
    class Person
    {
        string _name;  //姓名
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        int _age;  //年齡
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        char _gender;  //性别
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }

        public Person(string name,int age,char gender)  //構造函數
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }
    }
}           

下面是定義的Reporter類:

class Reporter:Person  //Reporter繼承Person類,
    {
        string _interest;  //興趣
        public string Interest
        {
            get { return _interest; }
            set { _interest = value; }
        }
        public void Introduce() //打招呼的一個方法
        {
            Console.WriteLine("大家好,我叫{0},我的愛好是{1}",this.Name,this.Interest);
        }

        public Reporter(string name, string interest) 
            : base(name, 0, '\0')   //需要用到base關鍵字,來調用父類中的構造函數
        {
            this.Name = name;
            this.Interest = interest;
        }
    }           

Reporter子類到底都繼承了Person這個父類的那些呢?

1:子類沒有繼承私有字段。

2.子類繼承了屬性

3.通過base關鍵字,在子類中顯示的調用父類的構造函數。但是子類并不是繼承的父類的構造函數,但是子類會預設的去調用父類那個預設的無參數的構造函數,但是當你在父類中有了一個構造函數的時候,

原來那個預設的無參數的就沒了了,此時,子類已經調不到你父類,需要你用base顯示去調用。

4.子類可以調用父類的方法。

繼承筆記記到這裡,掌握了新的知識在補充。

---------------------- ASP.Net+Android+IOS開發、 .Net教育訓練、期待與您交流! ----------------------