C#語言-04.OOP基礎

      a. OOP:面對對象思想
          i. 類:是一種功能強大的數據類型,並且是面向對象的基礎
              1. 語法:訪問修飾符 class 類名{ //類的主體 }
              2. 成員變量:不以「函數」形式體現
                  a. 常量:表明與類相關的常量值
                  b. 變量:類中的變量
                  c. 事件:由類產生的通知,用於說明發生了什麼事件
                  d. 類型:屬於類的局部類型
              3. 成員函數:以「函數」形式體現
                  a. 方法:完成類中各類計算或功能的操做,不能和類同名、不能和類中其餘成員同名
                  b. 屬性:定義類的值,並對它們提供讀、寫操做
                  c. 索引指示器:容許編程人員在訪問數組時,經過索引指示器訪問類的多個實例,又稱下標指示器
                  d. 運算符:定義類對象能使用的操做符
                  e. 構造函數:在類被實例化時首先執行的函數,主要是完成對象初始化操做,構造函數必須和類名相同
                  f. 析構函數:在類被刪除以前最後執行的函數,主要是完成對象結束時的收尾操做,必須和類名相同,並前加一個「~」波浪線符號
          ii. 構造函數:是類中一種特殊的方法,特色是 它的方法名與類名相同、沒有返回類型和主要完成初始化工做。
              1. 隱式構造函數:默認的狀況下,系統將會給類分配一個無參數的構造函數,而且沒有方法體,但要注意一旦類有了構造函數,就再也不自動分配構造函數了
              2. 無參構造函數:實例化時不須要給類的屬性賦值
              3. 帶參構造函數:實例化時須要給類的屬性賦值,實例化時必定要使傳入的參數和帶參構造函數的參數列表相對應
              4. 方法重載:是指在同一個類中,方法名相同,而參數類型和參數個數不一樣。在同一個類中,構造函數和變通方法均可以重載
          iii. 封裝:指利用抽象數據類型將數據和數據的操做結合在一塊兒,使其構成一個不可分割的獨立實體,儘量隱藏內部的細節,只保留一些對外接口,使之與外部發生聯繫,保存對象自身數據的完整性和安全性
              1. 好處:
                  a. 保證數據的安全性
                  b. 提供清晰的對外接口
                  c. 類內部實現能夠任意修改,不影響其餘類
          iv. 繼承:創建類之間的關係,實現代碼的利用,方便系統的擴展,繼承必須符合 is a 的關係,被繼承的類稱爲父類或者基類,繼承其餘類的類稱爲子類或者派生類
              1. 子類構造函數
                  a. 隱式調用父類構造函數
                      i. 建立子類對象時會首先調用父類的構造函數,而後纔會調用子類自己的構造函數,因爲沒有指明要調用父類的哪個構造函數,全部系統隱式地調用了父類的無參數構造函數
                  b. 顯式調用父類構造函數
                      i. 經過 base 關鍵字調用父類的構造函數進行初始化
                      ii. 注意:base 關鍵字調用父類的構造函數時,只能傳遞參數
                      iii. 若是父類沒有無參數的構造函數,那子類必需要使用 base 關鍵字來調用父類相應的構造函數,不然由於父類沒有無參構造函數的緣由而報錯
              2. 特性:
                  a. 傳遞性:若是 A 繼承 B 和 B 繼承 C,則 A 也就繼承了 C ,A能夠訪問 C 的成員
                  b. 單根性:一個類不可以同時繼承自多個父類
              3. 特色:
                  a. 繼承模擬了現實世界的關係,OOP 中強調一切皆對象,這符合咱們面向對象編程的思考方向
                  b. 繼承實現了代碼的重用
                  c. 繼承使得程序結構清晰,子類和父類的層次結構清晰
          v. 多態:相同的方法調用可實現不一樣的實現方式
              1. 使用虛方法實現多態
                  a. 建立父類變量,用子類對象實例化這個父類變量
                  b. 把父類類型做爲參數類型,它的子類對象做爲參數傳入
              2. 裏式替換原則:子類能夠替換父類而且出如今父類可以出現的任何地方,且程序的行爲不會發生變化,可是反過來,父類對象是不能替換子類對象的
                  a. Is 關鍵字:用於檢查對象和指定的類型是否兼容
                  b. as 關鍵字:用於兩個對象之間的類型轉換
              3. 抽象方法是一個沒有實現的方法,通用在定義方法時增長關鍵字 abstract 能夠聲明抽象方法
                  a. 語法:訪問修飾符  abstract 返回類型  方法名();
                      i. 注意:抽象方法沒有閉合的大括號,而是直接跟了一個分號「;」,也就是說,它沒有包括方法執行邏輯的方法體
                  b. 與虛方法的區別
                            虛方法                             抽象方法
                    用 virtual 修飾                        用 abstract 修飾
                    要用方法體,哪怕是一個分號     不容許有方法體
                    能夠被子類 override 必須被子類 override
                    除了密封類外均可以寫               只能在抽象類中寫
              4. 抽象類:含有抽象方法的類必然是抽象類
                  a. 語法:訪問修飾符  abstract class  類名;
                  b. 抽象類不能被實例化
                  c. 抽象類不能是密封或者靜態的
          i. 接口:接口繼承容許將一個方法的名稱和它的實現完全的分離
              1. 語法:[訪問修飾符] interface  接口名[:父接口名列表]{  //接口體  }
              2. 注意:
                  a. 接口僅僅提供成員的聲明,並不提供成員的實現
                  b. 接口成員只能是方法、屬性、索引指示器和事件,不能是常量、域、操做符、構造函數或析構函數,不能包含任何靜態成員
                  c. 接口成員聲明不能包含任何修飾符,接口成員默認訪問方式是public
                  d. 接口相似於抽象基類,繼承接口的任何非抽象類型都必須實現接口的全部成員
                  e. 不能直接實例化接口                                                    
相關文章
相關標籤/搜索