Home [C# 筆記] 字段、屬性與對象(物件)封裝
Post
Cancel

[C# 筆記] 字段、屬性與對象(物件)封裝

字段、屬性的區別

將 Point class的 x, y改成private

上節已經將x, y改成private,但我們需要從外部訪問這兩個字段,但還需要這兩個字段必須高度保持各自的私有隔離。

例如說,我們現在提出一個要求:經緯度都不可以是負數的。
如果將x改成public,我們是可以定義的,但是如果我們一不小心給他賦值的時候,寫成了point.x = -30,那麼這個時候可能就會引起系統級別的錯誤。

所以我們在給橫坐標賦值前,應該做一些判斷和限制,而這些判斷和限制就需要借助 getset 這兩個方法了。

從本質來說, getset就是兩個公有的方法,

1
2
3
4
5
6
7
8
9
10
11
12
13
private int x;
public int X
{
    get { return this.x; }
    set
    {
        if (value < 0) throw new Exception("value不能小於0");
        this.x = value;
    }
}

//get set 簡寫(自動實現屬性)
 public int Y { get; set; }

對象(物件)封裝

以上的操作就是封裝,所謂的封裝,就是能夠隱藏對象的具體細節,

This post is licensed under CC BY 4.0 by the author.