그렇다면 왜 중첩 클래스를 작성합니까?
몇 가지 중요한 이유를 생각할 수 있습니다.
1. 캡슐화 사용
여러 번 중첩 클래스는 클래스의 구현 세부 사항입니다. 메인 클래스의 사용자는 자신의 존재에 신경 쓸 필요가 없습니다. 메인 클래스의 사용자가 코드를 변경하지 않고도 자유롭게 변경할 수 있어야합니다.
2. 이름 오염을 피하십시오
해당 범위에 적합하지 않은 한 범위에 유형, 변수, 함수 등을 추가해서는 안됩니다. 이것은 캡슐화와 약간 다릅니다. 중첩 유형의 인터페이스를 표시하는 것이 유용 할 수 있지만 중첩 유형의 적절한 위치는 여전히 기본 클래스입니다. C ++ 랜드에서 반복자 유형이 그러한 예 중 하나입니다. 나는 C #에서 당신에게 구체적인 예제를 줄만큼 충분히 경험이 없다.
중첩 클래스를 기본 클래스와 동일한 범위로 이동하는 것이 이름 오염 인 이유를 보여주는 간단한 예를 만들어 보겠습니다. 연결된 목록 클래스를 구현한다고 가정 해 봅시다. 일반적으로
publid class LinkedList
{
class Node { ... }
// Use Node to implement the LinkedList class.
}
당신이 이동하기로 결정하는 경우 Node
와 동일한 범위까지 LinkedList
, 당신은 할 것
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNode
LinkedList
클래스 자체가 없으면 유용하지 않을 것입니다. 사용자 가 사용할 수 LinkedList
있는 LinkedListNode
객체를 반환 하는 일부 함수를 제공 하더라도 사용 되는 경우 에만 유용합니다 . 따라서 "노드"클래스를 피어 클래스로 만드는 것은 포함 범위를 오염시키는 것입니다.LinkedList
LinkedListNode
LinkedList
LinkedList