c#面向對象


====上一章《C#基礎

一、為什么需要面向對象:

  在面向對象出現之前,結構化程序設計是程序設計的主流,被稱為”面向過程“的程序設計。

    面向過程的開發方法,通常會存在以下問題:

      1、軟件復用性差

      2、軟件可維護性差

      3、軟件靈活性差

  面向對象編程思想中的對象,是一種具有狀態(屬性)和行為(方法)的數據結構,用於描述現實世界的某個事物,將現實世界的事物模型化。

二、對象與類的關系:

  類:對事物的一種抽象定義;

  對象:客觀存在的具體事物。

  2.1、創建類和對象:

    聲明類:class className    //<類名>

        {

          //Fields<字段>

          //Methods<方法>

          //Properties<屬性>

        }

    創建對象:className Object=new Constructor(參數列表);

            類名   對象名             構造方法()

  2.2、字段與屬性:

    1、字段類的成員,用於描述一類事物的某個特征的變量。

      【舉例】:Employee類中具有很多的特征(如姓名、年齡等),在定義類時即可用兩個字段分別存儲員工的姓名和年齡。

        class Employee  //聲明類

        {

          public String employeeName;//員工的姓名字段

          public int emlioyeeAge;//員工的年齡字段

        }

        Employee employee=new Employee();//創建對象(實例化對象相當於實實在在存在的一個人,類只是抽象的定義一個人的類)

        employee.employeeAge=20;//通過對象使用字段,給對象賦值年齡。

    2、屬性對字段的封裝,用於阻止非法數據的輸入,從而保護內部數據的安全。

      【封裝】:隱藏內部實現、對外提供公共操作的方式。

           對象就是封裝了數據和操作這些數據的代碼的邏輯實體。

           在一個對象內部,某些代碼和數據不能被外界訪問,對象通過這種方式對內部數據提供不同級別的保護,用於防止程序中的隱藏部分由於意外而被改變或被錯誤操作。

      【訪問修飾符】:從上到下,私有程度逐漸降低

        private只能在本類中使用
        protected:在本類中及其子類中可以使用
        internal同一命名空間(程序集)中的類可以使用
        public所有類均可使用

      【舉例】:Employee類中具有很多的特征(如姓名、年齡等),在定義類時即可用兩個字段分別存儲員工的姓名和年齡。

        class Employee  //聲明類

        {

          private String employeeName;//員工的姓名字段

          public String EmployeeName

          {

            get{return employeeName;}//只讀屬性

            set{employeeName=value;}//只寫屬性

          }

          private int emlioyeeAge;//員工的年齡字段

          public String EmployeeAge

          {

            get{return employeeAge;}//只讀屬性

            set

            {

              if(value<=0||value>100)

              {

                employeeAge=18;

                Console.WriteLine("年齡設置錯誤!");

              }

              else

              {

                employeeAge=value;

              }

            }

          }

        }

        Employee employee=new Employee();//創建對象(實例化對象相當於實實在在存在的一個人,類只是抽象的定義一個人的類)

        employee.employeeAge=20;//自動調用屬性EmployeeAge中的set訪問器

        //自動調用屬性EmployeeAge中的get訪問器

        Console.WriteLine("該員工的年齡是:{0}",employee.EmployeeAge);

  2.3、方法:(實例方法)面向對象程序設計中,對象可以執行的操作被稱為方法。

    1、方法的定義和調用:

      【語法】:訪問修飾符  返回值類型  方法名(參數列表)  //參數列表可以為空,但括號不能省略;存在多個參數時,需要使用逗號分隔。

           {                     //返回值類型可以是c#中的任意類型;也可以沒有返回值,若沒有返回值則必須使用Void.

            方法體;                //方法體中無論有多少行代碼都必須使用括號將其括起來。

           }

      【調用】:

        a、同一類中的方法直接通過方法名進行調用;

        b、同一命名空間不同類中的方法調用方式如下:

            ⑴、創建對象;//類名   對象名=new  構造方法();

            ⑵、通過對象名.方法名進行調用。//對象名.方法名();

        c、不同命名空間中的方法調用方式如下:

            ⑴、導入命名空間;//using 命名空間

            ⑵、創建對象;

            ⑶、通過對象名.方法名進行調用。

    2、構造方法:類被實例化時首先執行的一種特殊方法,用於完成對象屬性的初始化操作。(在創建對象的同時將屬性初始化)

        【注意】:一個類中若沒有定義任何構造方法,則運行環境會提供一個無參的構造方法。

 

        【分為】:無參的構造方法和有參的構造方法。

        【語法】:訪問類名(參數列表)  //構造方法名與類名相同

             {          //構造方法沒有返回值

               語句塊;

             }

        【舉例】:class Employee

             {

                 public Employee(String employeeName,int employeeAge)//創建一個有參的構造方法

               {

                  EmployeeName=employeeName;

                  EmployeeAge=employeeAge;

               }

             }

             //創建對象

             Employee employee=new Employee("Jack",20);

    3、靜態方法:(類方法)通過satic關鍵字修飾的方法

      【語法】:訪問修飾符  static  返回值類型  方法名(參數列表)  //靜態方法中只能訪問靜態的方法和屬性

           {                        //在調用時只能通過類名.方法名的方式實現

              方法體;

           }

====下一章《關於方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM