내부 클래스 ( Inner Class )

buta LOG·2022년 8월 11일
0

Java

목록 보기
3/5
post-thumbnail

내부 클래스는 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다.

  • 두 클래스가 서로 긴밀한 관계가 있을 떄 내부 클래스를 사용한다.
  • 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
  • 외부에는 불필요한 클래스를 감춰서 코드의 복잡성을 줄일 수 있다는 장점이 있다.
  • 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킨다.
class A{    //외부클래스
	...
    class B{	//내부클래스
    	...
    }
	...
}
  • 내부 클래스인 B는 외부 클래스인 A를 제외하고는 다른 클래스에서 잘 사용되지 않는 것이어야 한다.

내부 클래스의 종류와 특징

내부 클래스의 제어자와 접근성

  • 내부 클래스 중 스태틱 클래스(static class)만 static 멤버를 가질 수 있다.
  • finalstatic이 동시에 붙은 변수는 상수 이므로 모든 클래스에 정의가 가능하다.
  • 인스턴스 클래스스태틱 클래스는 외부 클래스의 멤버변수와 같은 위치에 선언되며, 또한 멤버 변수와 같은 성질을 가진다.

익명 클래스(Anonymous class)

public class Example {

    interface MyInterface {
        void doSomething();
    }

    public static void main(String[] args) {

        MyInterface myClass = new MyInterface() {
            @Override
            public void doSomething() {
                System.out.println("doSomething");
            }
        };
        myClass.doSomething();
    }
}
  • 클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한 번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다.
  • 이름이 없기 때문에 생성자도 가질 수 없다.
  • 단 하나의 클래스를 상속 받거나 단 하나의 인터페이스만을 구현할 수 있다.
  • 익명 클래스는 이름이 없기 때문에 외부클래스명$숫자.class 형식으로 클래스 파일명이 결정된다.
profile
한 줄 소개

0개의 댓글