-
Notifications
You must be signed in to change notification settings - Fork 0
Encapsulation (Đóng gói)
-
Các biến có phạm vi truy cập là
privatechỉ có thể truy cập được trong cùng một lớp (lớp bên ngoài không thể truy cập vào nó). Tuy nhiên, đôi khi chúng ta vẫn cần truy cập chúng và điều này sẽ được thực hiện bằng các thuộc tính. -
Thuộc tính trông giống như sự kết hợp giữa một biến và một phương thức, nó có hai phương thức là
getvàset -
Ví dụ:
class Person
{
private string name; // field
public string Name // property
{
get { return name; } // get method
set { name = value; } // set method
}
}-
Từ ví dụ trên có thể thấy được rằng thuộc tính
Nameđược liên kết với trườngname. Phương thứcgettrả về giá trị biếnnamevàsetsẽ gán value cho biếnname. -
Lúc này ta có thể truy cập biến
namethông qua thuộc tínhNamevì thuộc tính này có phạm vi truy cập làpublic. -
Ví dụ:
class Person
{
private string name; // field
public string Name // property
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
Person myObj = new Person();
myObj.Name = "VirtueSky";
Console.WriteLine(myObj.Name);
}
}-
C# cung cấp một cách để sử dụng các thuộc tính viết tắt/tư động, trong đó bạn không phải định nghĩa trường cho thuộc tính mà chỉ cần viết
get;vàset;bên trong thuộc tính. -
Ví dụ:
class Person
{
public string Name // property
{ get; set; }
}
class Program
{
static void Main(string[] args)
{
Person myObj = new Person();
myObj.Name = "VirtueSky";
Console.WriteLine(myObj.Name);
}
}- Encapsulation (Đóng gói)
-
Thuộc tính giúp ngăn chặn việc truy cập trực tiếp đến các trường. Bạn có thể đọc hoặc ghi dữ liệu thông qua thuộc tính.
-
Ví dụ:
private string name; // field
public string Name // property
{
get { return name; }
private set { name = value; }
}Ví dụ trên cho thấy các class bên ngoài chỉ có thể get giá trị thông qua thuộc tính Name mà không thể set vì phương thức set đã bị private.