[Java] 내부 클래스와 익명 클래스

rara_kim·2022년 6월 12일
0

Java

목록 보기
12/39

내부 클래스(Inner class)

내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 말한다.
이러한 내부 클래스는 외부 클래스(outer class)에 대해 두 개의 클래스가 서로 긴밀한 관계를 맺고 있을 때 선언할 수 있다.

class Outer{
	
    class Inner{
    	.....
    }
}

💡내부 클래스의 장점
1. 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있다.
2. 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킨다.
3. 외부에서는 내부 클래스에 접근할 수 없으므로, 코드의 복잡성을 줄일 수 있다.


💡내부 클래스의 종류
1. 정적 클래스(static class)
2. 인스턴스 클래스(instance class)
3. 지역 클래스(local class)
4. 익명 클래스(anonymous class)

외부 클래스 영역에 선언된 클래스 중에서 static 키워드를 가지는 클래스를 정적 클래스(static class) 라고 한다.
정적 클래스는 주로 외부 클래스(outer class)의 클래스 메소드에 사용될 목적으로 선언한다.

class Outer{
    public void print(){
        System.out.println("Outer.print");
    }
    
    class Inner {
        public void innerPrint() {
            Outer.this.print();
        }
    }
    
    static class InnerStaticClass {
        void innerPrint(){
              Outer.this.print();
        }
    }
}

익명 클래스(Anonymous class)

익명 클래스(anonymous class)란 다른 내부 클래스와는 달리 이름을 가지지 않는 클래스를 의미한다.
익명 클래스는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성하는 일회용 클래스이다.

따라서 생성자를 선언할 수도 없으며, 오로지 단 하나의 클래스단 하나의 인터페이스상속받거나 구현할 수 있다.

익명 클래스는 매우 제한적인 용도에 사용되며, 구현해야 하는 메소드가 매우 적은 클래스를 구현할 때 사용된다.

Person p1 = new Person() {
    @Override
    public void printInfo() {
        System.out.println("Main.printInfo");
    }
};
p1.printInfo();
profile
느리더라도 꾸준하게

0개의 댓글