산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# - 캡슐화

캡슐화 '물리적 또는 논리적 패키지 내에 하나 이상의 항목을 묶는 프로세스'로 정의됩니다. 객체 지향 프로그래밍 방법론에서 캡슐화는 구현 세부 정보에 대한 액세스를 방지합니다.

추상화 및 캡슐화는 객체 지향 프로그래밍의 관련 기능입니다. 추상화를 통해 관련 정보를 볼 수 있고 캡슐화를 통해 프로그래머는 원하는 추상화 수준을 구현할 수 있습니다. .

캡슐화는 액세스 지정자를 사용하여 구현됩니다. . 액세스 지정자 클래스 멤버의 범위와 가시성을 정의합니다. C#은 다음 액세스 지정자를 지원합니다 -

공개 액세스 지정자

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

다음 예는 이것을 보여줍니다 -

라이브 데모
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      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 = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Length: 4.5
Width: 3.5
Area: 15.75

앞의 예에서 멤버 변수 length와 width는 public으로 선언됩니다. , 따라서 r이라는 Rectangle 클래스의 인스턴스를 사용하여 Main() 함수에서 액세스할 수 있습니다. .

멤버 함수 Display()GetArea() 클래스의 인스턴스를 사용하지 않고 이러한 변수에 직접 액세스할 수도 있습니다.

멤버 함수 Display() 또한 공개로 선언됩니다. , 그래서 Main()에서도 액세스할 수 있습니다. r이라는 이름의 Rectangle 클래스 인스턴스 사용 .

비공개 액세스 지정자

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

다음 예는 이것을 보여줍니다 -

라이브 데모
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      private double length;
      private double width;
      
      public void Acceptdetails() {
         Console.WriteLine("Enter Length: ");
         length = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Enter Width: ");
         width = Convert.ToDouble(Console.ReadLine());
      }
      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();
      }
   }
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52

앞의 예에서 멤버 변수 length와 width는 private로 선언됩니다. , 따라서 Main() 함수에서 액세스할 수 없습니다. 멤버 함수 AcceptDetails()디스플레이() 이러한 변수에 액세스할 수 있습니다. 멤버 함수 AcceptDetails()디스플레이() 공개로 선언됨 , Main()에서 액세스할 수 있습니다. r이라는 이름의 Rectangle 클래스 인스턴스 사용 .

보호된 액세스 지정자

보호된 액세스 지정자를 사용하면 자식 클래스가 기본 클래스의 멤버 변수와 멤버 함수에 액세스할 수 있습니다. 이렇게 하면 상속을 구현하는 데 도움이 됩니다. 상속 장에서 이에 대해 더 자세히 논의할 것입니다.

내부 액세스 지정자

내부 액세스 지정자를 사용하면 클래스에서 해당 멤버 변수와 멤버 함수를 현재 어셈블리의 다른 함수 및 개체에 노출할 수 있습니다. 즉, 내부 액세스 지정자가 있는 모든 멤버는 해당 멤버가 정의된 응용 프로그램 내에 정의된 모든 클래스 또는 메서드에서 액세스할 수 있습니다.

다음 프로그램은 이것을 보여줍니다 -

라이브 데모
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      internal double length;
      internal double width;
      
      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 = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Length: 4.5
Width: 3.5
Area: 15.75

앞의 예에서 멤버 함수 GetArea() 액세스 지정자와 함께 선언되지 않았습니다. 그러면 언급하지 않는 클래스 멤버의 기본 액세스 지정자는 무엇입니까? 비공개입니다. .

보호된 내부 액세스 지정자

보호된 내부 액세스 지정자는 클래스가 동일한 응용 프로그램 내의 자식 클래스를 제외하고 다른 클래스 개체 및 함수에서 해당 멤버 변수 및 멤버 함수를 숨길 수 있도록 합니다. 상속을 구현할 때도 사용됩니다.


C 언어

  1. C# 클래스 및 개체
  2. C# 액세스 수정자
  3. C# 정적 키워드
  4. C# 추상 클래스 및 메서드
  5. C# 중첩 클래스
  6. C# 부분 클래스 및 부분 메서드
  7. C# 봉인된 클래스 및 메서드
  8. 자바 - 캡슐화
  9. C++의 다형성
  10. C++의 데이터 추상화