본문 바로가기

Java/기초

[Java] 중첩클래스(Nested Classes)

Java 프로그래밍 언어를 사용하면 클래스 내에 다른 클래스를 정의할 수 있다. 이러한 클래스를 중첩 클래스라고 한다.

- 중첩 클래스를 사용하는 이유

  • 한 곳에서만 사용되는 클래스를 논리적으로 그룹화
  • 캡슐화 증가
  • 더 읽기 쉽고 유지 관리하기 쉬운 코드로 이어짐

 

- 더 구체적인 상황에 맞게 사용하는 경우

  • Local Classes(로컬 클래스)
    • 클래스의 인스턴스를 두 개 이상 생성하거나 생성자에 액세스하거나 이름이 지정된 새 유형을 도입해야 하는 경우
  • Anonymous Classes(익명 클래스)
    • 필드나 추가 메소드를 선언해야 하는 경우
  • Lambda Expression(람다식)
    • 다른 코드에 전달하려는 단일 동작 단위를 캡슐화하는 경우
    • 기능 인터페이스의 간단한 인스턴스가 필요하고 앞의 기준이 적용되지 않는 경우
  • Nested Classes(중첩 클래스)
    • 요구 사항이 로컬 클래스의 요구 사항과 유사하고 유형을 더 널리 사용 가능하게 만들고 지역 변수 또는 메서드 매개 변수에 대한 액세스가 필요하지 않은 경우 사용

출처 : 

https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

 

Nested Classes (The Java™ Tutorials > Learning the Java Language > Classes and Objects)

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated

docs.oracle.com

https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

 

When to Use Nested Classes, Local Classes, Anonymous Classes, and Lambda Expressions (The Java™ Tutorials >

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated

docs.oracle.com

 

'Java > 기초' 카테고리의 다른 글

[Java] 리플렉션 (Reflection)  (0) 2021.09.05
[Java] 익명클래스(Anonymous Classes)  (0) 2021.09.05
[Java] LocalDateTime  (0) 2021.08.30
[Java] Optional  (0) 2021.08.25
[Java] 입력 뜯어보기(Scanner, InputStream, BufferdReader)  (0) 2021.08.14