익명의 내부 클래스 란 무엇입니까?
객체 지향 컴퓨터 프로그래밍에서 익명의 내부 클래스는 메서드 내에서 선언되었지만 이름이없는 클래스입니다. 익명의 내부 클래스에는 액세스 할 수있는 변수의 범위에 대한 제한을 포함하여 일반 클래스와 다른 몇 가지 제한이 있습니다. 익명의 내부 클래스를 사용하면 소스 코드를 더 읽기 쉽게 만들 수있는 특정 상황이 있지만, 주로 별도의 클래스 생성이 복잡 할 수있는 캡슐화를 시행하는 데 사용됩니다.
캡슐화는 객체 지향 프로그래밍 (OOP)의 개념으로 객체와 해당 구성 요소를 어떤 식 으로든 보호하고 객체에 바인딩해야합니다. 익명의 내부 클래스와 일반적으로 내부 클래스는 특히 복잡한 객체에 대한 캡슐화를 실현하는 데 도움이됩니다. 익명의 내부 클래스는 별도의 외부 클래스에 의존하는 클래스를 만들어 인위적으로 묶고 일부 구성 요소를 노출시킬 필요없이 익명으로 내부 클래스를 묶을 수 있습니다.
일부 프로그래밍 언어에서 익명의 내부 클래스는 단일 상속의 제한을 극복하는 데 도움이 될 수 있습니다. 객체가 한 클래스에서 상속되었지만 다른 클래스에 액세스해야하는 경우 내부 클래스를 즉시 생성 한 다음 적절한 처리기로 전달할 수 있습니다. 이 기술은 콜백 및 이벤트 리스너에서 일반적입니다. 유일한 대안은 하나 또는 두 개의 메소드 만 대체되는 전체 두 번째 클래스를 작성하는 것입니다.
익명의 내부 클래스에는 캡슐화 중단을 방지하고 범위를 적용하기 위해 몇 가지 제한이 있습니다. 기본 제한은 익명의 내부 클래스가 해당 변수가 final로 선언되지 않으면 해당 클래스가있는 메소드의 변수에 액세스 할 수 없다는 것입니다. 내부 클래스는 클래스의 수명과 클래스가 중첩되는 메소드 이상으로 계속 작동 할 수 있기 때문입니다. 래핑 클래스의 변수는 수명이 다하면 파괴되므로 내부 클래스의 참조는 즉시 무효가됩니다. 이것에 대한 유일한 예외는 최종 변수입니다. 인스턴스를 넘어서 존재하기 때문입니다.
익명의 내부 클래스에 대한보다 구체적인 용도 중 하나는 코드 보호입니다. 많은 OOP 언어는 리플렉션이라는 메커니즘을 제공합니다. 리플렉션을 통해 프로그램은 다른 클래스를 분석하고 해당 멤버 변수와 메서드가 무엇인지 확인할 수 있지만 코드 자체는 볼 수 없습니다. 익명의 내부 클래스를 사용하면 내부 클래스의 내용이 반영되지 않고 더 큰 클래스의 내부 작업이 효과적으로 숨겨 질 수 있습니다.