Chủ Nhật , 25 Tháng Mười 2020
Trang chủ / HỌC LẬP TRÌNH / C# [C Sharp] / [Học lập trình] – C# – [Bài 25] (Access Modifiers) – Điều chỉnh truy xuất trong C#

[Học lập trình] – C# – [Bài 25] (Access Modifiers) – Điều chỉnh truy xuất trong C#

Điều chỉnh truy xuất trong C#


Điều chỉnh truy xuất

Chúng ta đã rất quen thuộc với từ khóa public, nó xuất hiện rất nhiều lần trong các ví dụ trước:

public string color;

Từ khóa public là một access modifier, nó được sử dụng để thiết lập mức độ truy xuất/nhìn thấy của các lớp, các trường, các phương thức và các thuộc tính.

Trong C# có các access modifiers sau:

Modifier Mô tả (Description)
public Mã nguồn mà tất cả các lớp được truy xuất
private Mã nguồn chỉ được truy xuất bên trong một lớp
protected Mã nguồn được truy xuất bên trong lớp, hoặc bên trong một lớp mà nó được thừa kế từ lớp đó. Chúng ta sẽ học nhiều hơn về thừa kế(inheritance) trong các bài sau
internal Mã nguồn chỉ được truy xuất bên trong assembly của chính nó, assembly khác không thể truy xuất. Chúng ta sẽ học nhiều hơn về điều này trong các bài sau

Ngoài ra còn có 2 kết hợp: protected internalprivate protected.

Bây giờ, chúng ta sẽ tập trung vào 2  access modifier public private.


Private Modifier

Nếu chúng ta khai báo một trường với access modifier là private, thì nó chỉ có thể được truy xuất bên trong cùng một lớp:

Ví dụ

class Car
{
  private string model;

  static void Main(string[] args)
  {
    Car Ford = new Car("Mustang");
    Console.WriteLine(Ford.model);
  }
}

Kết quả sẽ là: Mustang
Chạy ví dụ »

Nếu chúng ta thử truy xuất nó bên ngoài lớp, một lỗi sẽ xảy ra:

Ví dụ

class Car
{
  private string model = "Mustang";
}

class Program
{
  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

Kết quả sẽ là:

'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used

Chạy ví dụ »


Public Modifier

Nếu chúng ta khai báo một trường với access modifier là public, thì tất cả các lớp sẽ truy xuất được:

Ví dụ

class Car
{
  public string model = "Mustang";
}

class Program
{
  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

Kết quả sẽ là: Mustang

Chạy ví dụ »


Tại sao cần sử dụng các Access Modifiers?

Chúng ta sử dụng các access modifiers để điều khiển mức hiển thị của các thành phần của lớp( mức bảo mật của mỗi lớp, mỗi thành phần lớp riêng biệt).

Để đạt được sự đóng gói (“Encapsulation“) – là quá trình đảm bảo rằng các dữ liệu nhạy cảm được ẩn khỏi người dùng. Điều này được thực hiện bằng cách khai báo các trường bằng từ khóa private.

Chú ý:  Theo mặc định, tất cả các thành phần của một lớp là private nếu chúng ta không chỉ định một access modifier:

Ví dụ

class Car
{
  string model;  // private
  string year;   // private
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *