Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 public, protected 및 private 액세스 지정자의 차이점은 무엇입니까?

<시간/>

공개 액세스 지정자

공용 액세스 지정자를 사용하면 클래스에서 해당 멤버 변수와 멤버 함수를 다른 함수 및 개체에 노출할 수 있습니다. 모든 공개 멤버는 클래스 외부에서 액세스할 수 있습니다.

예시

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();
      }
   }
}

출력

Length: 7
Width: 10
Area: 70

보호된 액세스 지정자

보호된 액세스 지정자를 사용하면 자식 클래스가 기본 클래스의 멤버 변수와 멤버 함수에 액세스할 수 있습니다.

보호된 멤버에 액세스하는 보호된 액세스 수정자의 예를 살펴보겠습니다.

예시

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");
      }
   }
}

출력

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

비공개 액세스 지정자

개인 액세스 지정자를 사용하면 클래스가 다른 함수 및 개체에서 해당 구성원 변수 및 구성원 함수를 숨길 수 있습니다. 같은 클래스의 함수만 private 멤버에 액세스할 수 있습니다. 클래스의 인스턴스라도 private 멤버에 액세스할 수 없습니다.

예시

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();
      }  
   }
}

출력

Length: 10
Width: 15
Area: 150