C#의 중첩 클래스
이 자습서에서는 C# 프로그래밍 언어의 중첩 클래스를 소개합니다.
클래스는 사용자가 정의하고 무언가를 빌드하는 데 사용되는 청사진 또는 패턴입니다. 메소드와 필드(액션을 정의하는 멤버 함수)를 결합한 단일 인스턴스입니다.
C#
의 중첩 클래스
C#에서 사용자는 중첩 클래스라고 하는 다른 클래스 내부에 클래스를 정의할 수 있습니다. 주요 목적은 중첩 클래스의 범위를 제한하는 것입니다.
일반 클래스와 비교하여 중첩 클래스는 개인 수정자 및 보호의 추가 가능성을 제공합니다. 부모 클래스 컨텍스트 내에서만 이 클래스를 호출해야 하는 경우 일반적으로 이를 중첩 클래스로 정의하는 것이 좋습니다.
이 클래스가 라이브러리 외부에서 사용된다고 가정합니다. 일반적으로 두 클래스에 개념적 관계가 있는지 여부에 관계없이 사용자가 별도의 동일한 수준의 클래스로 정의하는 것이 더 쉽게 액세스할 수 있습니다.
공개 상위 클래스 내부에 공개 클래스를 중첩하는 것이 기술적으로 가능하더라도 이것은 거의 좋은 생각이 아닙니다.
C#
에서 중첩 클래스를 사용하는 이유
중첩 클래스를 사용해야 하는 몇 가지 강력한 이유가 있습니다.
- 한 번만 사용하는 클래스를 그룹화하는 실용적인 기술입니다.
- 캡슐화가 개선되었습니다.
- 중첩 클래스를 사용하면 코드를 더 쉽게 읽고 유지 관리할 수 있습니다.
- 논리적인 클래스 그룹핑을 용이하게 합니다.
클래스가 하나의 다른 클래스에만 가치가 있는 경우 해당 클래스에 포함하여 두 클래스를 함께 유지하는 것이 좋습니다. 이러한 도우미 클래스를 중첩하면 더 간단해집니다.
공용 및 내부 액세스 수정자와 함께 중첩 클래스에는 개인 및 보호된 내부 액세스 수정자가 포함될 수 있습니다.
클래스 내에서 반환된 인터페이스를 구현하는 것이 유익한 경우가 있습니다. 그러나 해당 인터페이스의 구현은 외부 세계에서 완전히 숨겨져 있어야 합니다.
예를 들어 yield가 C#에 도입되기 전에 컬렉션 내부에 열거자 구현을 개인 클래스로 포함하여 빌드했습니다. 컬렉션 구성원은 간단한 액세스 권한을 갖지만 외부 세계는 이 작업이 수행되는 방법의 복잡성을 필요로 하지 않거나 볼 수 없습니다.
C#
에서 중첩 클래스 구현
다음은 중첩 클래스의 개념을 설명하는 코드입니다.
Program
클래스는 public static main
메소드가 있는 프로그램의 기본 클래스입니다. 외부 클래스 Outside_class
를 public으로 만들고 Inside_class
라는 이름의 다른 클래스를 public으로 만들었습니다.
또한 Outside_class
내부와 Inside_class
내부의 두 가지 방법을 만들었습니다. Outside_class
개체에서 Inside_class
메서드에 액세스할 수 없습니다.
이 내부의 메소드에 액세스하려면 Inside_class
의 인스턴스를 생성해야 합니다.
using System;
public class Program {
public static void Main(string[] args) {
// create instance of outside class
Outside_class outinstance = new Outside_class();
outinstance.outerclassmethod();
// you can't access inside class methods from outside class objects
// create instance of inside class
Outside_class.Inside_class insideinstance = new Outside_class.Inside_class();
// accessing the method of inside class.
insideinstance.insideclassmethod();
Console.Read();
}
}
public class Outside_class {
// Method of outside class
public void outerclassmethod() {
Console.WriteLine("here is Outside class method");
}
// Inner class
public class Inside_class {
// Method of inside class
public void insideclassmethod() {
Console.WriteLine("here is Inside class Method");
}
}
}
다음은 출력이 있는 중첩 클래스를 사용하는 코드 이미지입니다.
중첩 클래스가 코드를 쉽게 읽을 수 있도록 한다는 것은 이미 분명합니다. 우리는 서로 함께 사용하는 모든 클래스를 통합할 수 있습니다.