C#-面向對象的三大特性——封裝(封裝成員變量、封裝成員方法)

封裝:函數

封裝就是將數據或函數等集合在一個個的單元中(咱們稱之爲類)。被封裝的對象一般被稱爲抽象數據類型。spa

封裝的意義在於保護或者防止代碼(數據)被咱們無心中破壞。3d

 

封裝既能夠封裝成員變量,又能夠封裝成員方法code

 

=====================================================================================================對象

封裝成員變量 封裝步驟:blog

一、新建類——資源

面向對象最基本的單元就是類,即一個.cs文件,就像一個文本文檔,裏面就是放置C#代碼文檔

新建一個類:在 解決方案資源管理器 中右鍵 空間名 → 添加 → 新建項目 或 類 → 命名類get

(用戶本身寫的類 - 用戶自定義類型    io

若是要使用我們自定義類型產生出來的 對象 必須有一個實例化的過程:類名 定義名 = new 構造函數(); 好比 student st=new student();)

例如建立一個student類:

class 表示類  student 爲類名 (建立的類默認的訪問修飾符爲internal,隱藏顯示)

 

二、寫構造函數——

類的基本結構是:構造函數 - 建立一個類的函數(每個類都有一個構造函數,默認隱藏)

如何將隱藏的構造函數寫出來?

圖中紅色邊框區域就是student類的構造函數,此時爲public(公共的)

每個類都有構造函數,訪問修飾符必須是public的,而且不須要寫任何返回值,方法名與類名一致

【什麼是public? public是一個 訪問修飾符

訪問修飾符是定義函數的訪問權限和訪問等級,訪問修飾符有四種:public(公共的)、private(私有的)、internal(內部的)、protected(被保護的)

public - 公共的,任何地方均可以訪問,可是須要引用 命名空間
private - 私有的,類的內部才能夠訪問

internal - 內部的,默認的,程序集中能夠訪問,程序集就是命名空間
protected - 被保護的,類的內部和類的父類和子類中能夠訪問】

 

三、向類中填寫信息——

好比:學生信息包括學號、姓名、性別、年齡(_code、_name、_sex、_age 叫作 成員變量

 

下劃線是爲了一會進行封裝,此時訪問修飾符用的是public,主函數中是能夠進行調用和賦值修改的

 

四、進行封裝(固定格式)——

封裝方法一:(1)在新建類中,將信息的訪問修飾符修改成private,此時主函數中,類的方法沒法調用

    

(2)在新建類中寫方法調用函數,寫一個public,容許主函數訪問調用,類型同上,命名時去掉下劃線(封裝函數叫 屬性

get 是讀取(屬性取值) set 是賦值(屬性賦值)  此時主函數不能調用_code,而能調用code,但賦值是給_code進行賦值

   

封裝方法二: 點擊方法名,右鍵鼠標 → 重構 → 封裝字段 → 對話框無需修改,回車,回車

封裝方法三:在方法二中,能夠看到 封裝字段 後有快捷鍵 Ctrl+R,E,再按兩次回車跳過對話框即完成封裝

 

五、封裝完成 

 

此時存在一個問題,性別除了輸入男或女,可是輸入其餘信息仍能夠進行賦值,如何只能賦值男和女?

修改_sex賦值時set屬性

 

由於性別只有男女兩個選項,能夠用bool類型返回true或flase來顯示男女,好比true是男,false是女

輸入的是男或女,_sex接收的確實true或false,因此將輸入的文字轉換成bool類型,此時_sex沒法接收除了true和false意外的數據,因此錯誤

或者用 <bool?> 可空bool類型:

正常使用時,輸入錯誤默認返回true

 

此時,函數中只有 set 沒有 get ,此時的函數只能賦值,不能進行取值

那麼如何取值呢?添加一個新的函數Sex1,get 返回值 return _sex,若是是true返回「男」,若是是false返回「女」,此時主函數訪問的是Sex1

 

=====================================================================================================

封裝成員方法 封裝步驟:

方法又分爲普通方法和靜態方法

=====================================================================================================

相關文章
相關標籤/搜索