Lập trình
Tầm Vực Trong Lập Trình Hướng Đối Tượng: public, private, protected và internal
Trong lập trình hướng đối tượng, việc kiểm soát mức độ truy cập (access level) của các thành phần lớp là rất quan trọng để đảm bảo tính đóng gói (Encapsulation) và bảo mật dữ liệu. Các từ khóa truy cập như public, private, protected, và internal cho phép bạn kiểm soát cách các thành phần (thuộc tính, phương thức, class con...) được truy cập từ bên ngoài hoặc bên trong class.
Trong bài viết này, chúng ta sẽ cùng tìm hiểu tầm vực truy cập của các thành phần lớp dựa trên các từ khóa phổ biến này.
Tầm vực của lớp chỉ xác định lớp có thể được thấy hay không, không ảnh hưởngđến tầm vực các thành phần bên trong lớp đó.
Mặc định khi không khai báo từ khóa thì tầm vực của thành phần được xem như là private
- public – Truy cập công khai
Từ khóa public xác định thành phần được phép truy xuất từ bên ngoài lớp
đó. Đây là mức truy cập công khai, được truy cập mội nơi.
public class NguoiDung
{
public string Ten { get; set; } // Có thể truy cập từ bất kỳ đâu
}
2. private – Truy cập riêng tư
Thành phần được khai báo private chỉ được truy cập bên trong class đó.
Đây là mức độ bảo vệ cao nhất, dùng để ẩn chi tiết nội bộ của lớp.
public class NguoiDung
{
private string matKhau; // Không thể truy cập từ bên ngoài
public void SetMatKhau(string mk)
{
matKhau = mk;
}
}
3. protected – Truy cập kế thừa
Thành phần protected có thể truy cập trong class đó và các lớp dẫn xuất (con).
Đây là cách kiểm soát truy cập khi làm việc với tính kế thừa.
public class NhanVien
{
protected double LuongCoBan;
protected void TinhLuong() { ... }
}
public class GiamDoc : NhanVien
{
public void HienThiLuong()
{
// Có thể truy cập LuongCoBan và TinhLuong từ lớp cha
}
}
4. internal – Truy cập nội bộ Assembly
Thành phần internal chỉ có thể được truy cập trong cùng một Assembly (tức là trong cùng một dự án hoặc thư viện).
internal class BaoCao
{
internal void InBaoCao() { ... }
}
Mức truy cập | Truy cập trong class | Truy cập lớp dẫn xuất | Truy cập bên ngoài | Ghi chú |
---|---|---|---|---|
public | ✔ | ✔ | ✔ | Mở nhất |
private | ✔ | ✖ | ✖ | Đóng kín |
protected | ✔ | ✔ | ✖ | Dùng cho kế thừa |
internal | ✔ | ✔ (nếu cùng Assembly) | ✖ (nếu khác Assembly) | Giới hạn nội bộ |
Việc hiểu rõ và áp dụng đúng tầm vực truy cập bằng các từ khóa public, private, protected, internal là nền tảng để xây dựng mã nguồn chắc chắn, dễ bảo trì và bảo mật cao. Hãy sử dụng tầm vực chặt chẽ nhất có thể và chỉ mở rộng khi thật cần thiết – đó là nguyên tắc quan trọng trong thiết kế hệ thống hướng đối tượng.