Trong C#, các từ khóa truy cập (access modifiers) kiểm soát quyền truy cập vào các thành viên (thành phần) của lớp như phương thức, thuộc tính và trường. Dưới đây là sự khác biệt giữa các từ khóa truy cập phổ biến:
1. public
- Phạm vi truy cập: Có thể truy cập từ bất kỳ đâu, không bị hạn chế.
- Sử dụng: Thường được sử dụng cho các thành viên của lớp mà cần phải truy cập từ bên ngoài, chẳng hạn như các phương thức hoặc thuộc tính công khai của một API.
public class MyClass
{
public int MyProperty { get; set; } // Có thể truy cập từ bất kỳ đâu
}
2. private
- Phạm vi truy cập: Chỉ có thể truy cập bên trong lớp mà nó được khai báo.
- Sử dụng: Được sử dụng để ẩn các chi tiết triển khai và bảo vệ dữ liệu nhạy cảm.
public class MyClass
{
private int MyPrivateField; // Chỉ có thể truy cập trong MyClass
}
3. protected
- Phạm vi truy cập: Có thể truy cập bên trong lớp mà nó được khai báo và từ các lớp dẫn xuất (lớp con).
- Sử dụng: Thường được sử dụng khi bạn muốn cho phép các lớp con truy cập vào các thành viên, nhưng vẫn bảo vệ chúng khỏi truy cập từ bên ngoài.
public class MyClass
{
protected int MyProtectedField; // Có thể truy cập trong MyClass và các lớp con
}
public class DerivedClass : MyClass
{
public void MyMethod()
{
MyProtectedField = 10; // Hợp lệ vì DerivedClass là lớp con của MyClass
}
}
4. internal
- Phạm vi truy cập: Có thể truy cập từ bất kỳ đâu trong cùng một assembly (tập hợp các tệp mã nguồn biên dịch thành một đơn vị thực thi).
- Sử dụng: Thường được sử dụng để cho phép các thành viên của lớp được chia sẻ trong cùng một assembly mà không bị truy cập từ bên ngoài.
internal class MyInternalClass
{
internal int MyInternalField; // Có thể truy cập từ bất kỳ đâu trong cùng assembly
}
5. protected internal
- Phạm vi truy cập: Có thể truy cập từ các lớp trong cùng một assembly hoặc từ các lớp dẫn xuất ở bất kỳ đâu.
- Sử dụng: Kết hợp các tính năng của
protected
vàinternal
, thường được sử dụng khi bạn muốn các thành viên của lớp có thể truy cập từ các lớp con và trong cùng một assembly.
public class MyClass
{
protected internal int MyProtectedInternalField; // Có thể truy cập từ các lớp trong cùng assembly hoặc từ các lớp dẫn xuất
}
Tổng Kết
- public: Truy cập từ bất kỳ đâu.
- private: Chỉ truy cập được từ bên trong lớp khai báo.
- protected: Truy cập được từ bên trong lớp khai báo và các lớp dẫn xuất.
- internal: Truy cập được từ bất kỳ đâu trong cùng một assembly.
- protected internal: Truy cập được từ các lớp trong cùng assembly hoặc từ các lớp dẫn xuất ở bất kỳ đâu.
Sử dụng các từ khóa truy cập phù hợp giúp bạn bảo vệ và kiểm soát quyền truy cập vào các thành viên của lớp, tạo ra mã nguồn an toàn và dễ bảo trì hơn.
Comments