深刻類的方法

1.構造函數框架

  咱們知道要使用類的屬性和方法來完成程序功能,首要的任務是類進行實例化,經過SE engineer = new SE();建立SE對象,這種建立類實例的方法被稱爲構造函數函數

  1.構造函數this

    類的構造函數是類中的一種特殊方法,它具備如下特色:spa

      1.方法名與類型相同code

      2.沒有返回值類型對象

      3.主要完成對象的初始化工做blog

 

 

一.C#關鍵字擴充解釋:開發

  1. new :string

    1)開闢空間it

    2)調用構造

    3)實例化對象

  2. this:

    當前類的實例,用來區分入參和成員變量

  3.  void  

    void修飾的方法表示返回值類型爲空,並不表明沒有返回值

二.構造方法:

  1.構造函數

    特色:

      方法名與類名相同

      沒有返回值類型

      主要完成對象的初始化工做

    注:不能將構造函數定義爲void

      根據廣泛的經驗,咱們在進行開發時,通常不在構造函數中進行類的初始化之外的事情,不要嘗試顯示地調用構造函數

  2.無參構造

    語法:   

訪問修飾符 類名()
{
          //方法體          
}        

    代碼示例:

  

 public Book() { }

  3.帶參構造函數

    語法:

    

訪問修飾符 類名(參數列表)
{
          //方法體          
} 

      參數列表通常用來給類的屬性賦值

    優勢:

      靈活性更好

      經過參數來動態控制對象的特徵

    示例代碼:

複製代碼
public Book(int price, string author, string name)
        {
            //當前類的實例 ,用來 區分入參  和成員變量。
            this.price = price;
            this.author = author;
            this.name = name;
            
        }
複製代碼

  4.隱私構造函數

    在沒有手動編寫構造時,系統會給咱們自動生成一個無參構造

    爲何系統要自動生成無參構造?

            是爲了給未來給高級框架,高級框架在底層能夠經過無參構造給咱們的類建立對象。

三.方法重載

  1.構造函數重載

  

複製代碼
 public class Player
    {
        //構造函數也能夠構成重載
        public Player() 
        {

        }

        public Player(int age) 
        {

        }
}
複製代碼

  2.方法重載

    特色:

      方法名相同

      方法參數類型不一樣或者參數個數不一樣

      在同一個類中

    須要注意,方法名及參數列表相同的方法,僅是返回值類型不一樣,不能稱爲方法重載

    

複製代碼
 public void Say() { }

        public string Say(int age)
        { 
            return "1"; 
        }






 public void Eat(int age,string name) 
        {

        }

        public void Eat(string name, int age)
        {

        }
複製代碼

  4.模仿Console系統類的WriteLine方法的可變參數數量傳入

    

複製代碼
 public class MagicClass
    {
       //param 參數  params 參數集合   可變參數 
       public void Say(params object[] arg) 
       {

       }
    }
複製代碼

    :方法重載不只能避免命名的麻煩,還能使調用者沒必要判斷方法名就可直接調用

四.對象間的交互

  1.概述:

    在面向對象的世界裏,一切皆爲對象

    對象與對象相互獨立,互不干涉,但在必定的外力的做用下,對象開始共同工做

  

    每一個類都有本身的特性和功能,咱們把它們封裝爲屬性和方法

    對象之間經過屬性和方法進行交互

    能夠認爲方法的參數及方法的返回值都是對象相互傳遞的消息

  2.實例

    

複製代碼
    //遙控器
    public class Contol
    {
       
        public void Open(Tv tv)
        {
            tv.Open();
        }
        public void Close(Tv tv) 
        {
            tv.Close();
        }
        public void ChangeChannel(Tv tv,string channelName)
        {
            tv.ChangeChannel(channelName);
        }
    }




    /// <summary>
    /// 電視機
    /// </summary>
    public class Tv
    {
        //維護一個狀態
        bool state = false;//關閉
        public void Open() 
        {
            if (state==false)//關閉的
            {
                state = true;//狀態切換到開 機狀態
                Console.WriteLine("電視機打開啦!!!!!~~~~~");
            }   
        }
        public void Close()
        {
            if (state == true)//開着的
            {
                state = false;//狀態切換到關 機狀態
                Console.WriteLine("電視機關閉啦!!!!!~~~~~");
            }
        }

        public void ChangeChannel(string channelName)
        {
            if (state==true)
            {
                Console.WriteLine("您已經成功切換到"+channelName);
            }
        }

    }




        static void Main(string[] args)
        {
            //01.買一個電視機
            Tv tv = new Tv();


            //02.買一個遙控器
            Contol control = new Contol();

            //03.進行操做
            control.Open(tv);
            control.ChangeChannel(tv, "鳳凰衛視");
            control.Close(tv);


        }
複製代碼

   經驗:

     一旦程序報錯"未將對象引用設置到對象的實例",咱們就能夠認定某個對象沒有實例化。此時能夠經過錯誤代碼找到是哪一個對象沒有實例化,進行相應修改便可

相關文章
相關標籤/搜索