C#--構造函數

定義
構建方法用來創建對象,並且可以在構造函數中對對象進行初始化 構造函數是用來創建對象的特殊方法,方法名和類名一樣,沒有返回值,連void都不用

*構造函數可以有參數,new對象的時候傳遞函數參數即可
*如果不指定構造函數,則類有一個默認的無參構造函數
*如果制定了構造函數,則不再有默認的無參構造函數,如果需要無參構造函數,則需要自己來寫。
*構造函數可以重載,也就是有多個參數不同的構造函數

使用構造方法能解決的問題

1.在賦初值時,重複的書寫對象名

2.假如我們有一個屬性,不允許用戶隨意改動,我們一般把這個屬性定義爲只讀類型的屬性,那麼這個只讀類型的屬性就不能在實例化後對他賦值了,那麼我們就可以通過構造方法來進行初始化

注意

1、定義了一個帶參構造函數後,最好定義一個無參構造函數,這樣可以避免子類調用時出錯

2、調用基類構造函數:base() 或 :base(參數列表) 調用本類其它構造函數 :this() 或 :this(參數列表)

3、只有在用base顯示調用父類的構造函數時,程序纔不會默認的調用不帶參數的構造函數。

我們定義一個好的類,如果沒有寫構造方法,那麼編譯器就會自動在這個類中給我們添加一個沒有參數的構造方法
一旦我們寫了一個構造方法,那麼編譯器就不再會給我們添加這個沒有參數構造方法了

代碼塊(車票練習)
 public class Ticket
    {
        public Ticket (int distance)
        {
            if (distance <0)
            {
                distance = 0;
            }
            this._distance = distance;
        }
        int _distance;
        public int Distance
        {
            get { return _distance; }
        }

        double _price;
        public double Price
        {
            get
            {
                if (_distance <= 100)
                {
                    return _distance * 1.0;
                }
                else if (_distance <=200)
                {
                    return _distance * 0.95;
                }
                else if (_distance <=300)
                {
                    return _distance * 0.9;
                }
                else
                {
                    return _distance * 0.8;
                }
            }
        }
        public void Show()
        {
            Console.WriteLine("{0}公里的價格爲{1}",this .Distance,this .Price  );
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章