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


封裝:

封裝就是將數據或函數等集合在一個個的單元中(我們稱之為類)。被封裝的對象通常被稱為抽象數據類型。

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

 

封裝既可以封裝成員變量,又可以封裝成員方法

 

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

封裝成員變量 封裝步驟:

1、新建類——

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

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

(用戶自己寫的類 - 用戶自定義類型    

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

例如創建一個student類:

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

 

2、寫構造函數——

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

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

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

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

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

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

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

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

 

3、向類中填寫信息——

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

 

下划線是為了一會進行封裝,此時訪問修飾符用的是public,主函數中是可以進行調用和賦值修改的

 

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

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

    

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

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

   

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

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

 

5、封裝完成 

 

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

修改_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

 

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

封裝成員方法 封裝步驟:

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

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

 


免責聲明!

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



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