Computer >> Máy Tính >  >> Lập trình >> C#

Sự khác biệt giữa các chỉ định truy cập công khai, được bảo vệ và riêng tư trong C # là gì?

Công cụ chỉ định truy cập công khai

Bộ chỉ định truy cập công khai cho phép một lớp hiển thị các biến thành viên và các hàm thành viên của nó với các hàm và đối tượng khác. Mọi thành viên công khai đều có thể được truy cập từ bên ngoài lớp.

Ví dụ

using System;
namespace Demo {
   class Rectangle {
      public double length;
      public double width;
      public double GetArea() {
         return length * width;
      }  
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   } //end class Rectangle
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 7;
         r.width = 10;
         r.Display();
         Console.ReadLine();
      }
   }
}

Đầu ra

Length: 7
Width: 10
Area: 70

Công cụ chỉ định quyền truy cập được bảo vệ

Bộ chỉ định quyền truy cập được bảo vệ cho phép một lớp con truy cập các biến thành viên và các hàm thành viên của lớp cơ sở của nó.

Hãy để chúng tôi xem một ví dụ về công cụ sửa đổi quyền truy cập được bảo vệ, truy cập các thành viên được bảo vệ.

Ví dụ

using System;
namespace MySpecifiers {
   class Demo {
      protected string name = "Website";
      protected void Display(string str) {
         Console.WriteLine("Tabs: " + str);
      }
   }
   class Test : Demo {
      static void Main(string[] args) {
         Test t = new Test();
         Console.WriteLine("Details: " + t.name);
         t.Display("Product");
         t.Display("Services");
         t.Display("Tools");
         t.Display("Plugins");
      }
   }
}

Đầu ra

Details: Website
Tabs: Product
Tabs: Services
Tabs: Tools
Tabs: Plugins

Công cụ chỉ định quyền truy cập riêng tư

Bộ xác định quyền truy cập riêng tư cho phép một lớp ẩn các biến thành viên và các hàm thành viên của nó khỏi các hàm và đối tượng khác. Chỉ các hàm của cùng một lớp mới có thể truy cập các thành viên riêng của nó. Ngay cả một phiên bản của một lớp cũng không thể truy cập vào các thành viên riêng tư của nó.

Ví dụ

using System;
namespace Demo {
   class Rectangle {
      //member variables
      private double length;
      private double width;
      public void Acceptdetails() {
         length = 10;
         width = 15;
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
         Console.ReadLine();
      }  
   }
}

Đầu ra

Length: 10
Width: 15
Area: 150