close

封裝講簡單點就是不對外公開

只允許自己使用

主要是防止一些錯誤的事情發生

在這先講解公開及私有的修飾詞

Public (公開) 可以給任何人存取使用

Private (私有) 只有自己能存取使用

封裝

public class PlayerData
{
    // 名字
    public  string Name { get; private set; }
    // 錢
    public  int     Money;
    // 私房錢
    private int     MyMoney;
}

public void Start()
{
    // 定義一個玩家資料
   PlayerData playerData = new PlayerData();
   playerData.Name         = "Weight"; // 錯誤 (屬性存是私有
   playerData.Money        = 1000;     // 正確
   playerData.MyMoney      = 50;       // 錯誤 (私有
}

這邊用個簡單的範例來講解

NickName 是你的名字 大家都可以知道 但是不能去修改你的名稱

Money 男生結婚了  你的錢就是家裡的了.... (汗

MyMoney 你的私房錢 當然只有你知道

那封裝主要講的就是私有

不讓除了自己以外的人使用  防止一些錯誤的事情發生

就像你的名字  如果你的朋友可以隨意改是不是很奇怪呢...

因為名字別人可以知道  所以在這邊就用屬性的方式表示

如果你的私房錢可以給人使用  那還叫私房錢嗎!?

那這些被封裝的怎麼辦呢

修改成用建構函式的方式

public class PlayerData
{
    // 建構初始化
    public PlayerData(string m, int m, int mm)
    {
        Name        = m;
        Money       = m;
        MyMoney     = mm;
    }
    // 名字
    public  string  Name { get; private set; }
    // 錢
    public  int     Money;
    // 私房錢
    private int     MyMoney;
}

public void Start()
{
     // 定義一個玩家資料 建構初始化 傳參數
     PlayerData playerData = new PlayerData("Weight", 1000, 50);
}

 

你也可以用Function的方式來呈現

public class PlayerData
{
    // 名字
    public  string  Name { get; private set; }
    // 錢
    public  int     Money;
    // 私房錢
    private int     MyMoney;

    // 設定名字
    public void SetName(string m)
    {
        Name = m;
    }
    //設定私房錢
    public void SetMyMoney(int mm)
    {
        MyMoney = mm;
    }
}

public void Start()
{
     // 定義一個玩家資料
     PlayerData playerData = new PlayerData();
     playerData.SetName("Weight");
     playerData.SetMyMoney(50);
}

多練習幾次就會知道什麼情況下要使用什麼樣的方式

arrow
arrow

    Weight 發表在 痞客邦 留言(0) 人氣()