한 걸음 두 걸음

자바 JAVA ] 내부클래스 inner class / 무명클래스 anonymous class 본문

Language/Java

자바 JAVA ] 내부클래스 inner class / 무명클래스 anonymous class

언제나 변함없이 2019. 11. 21. 15:25
반응형

내부클래스란?

하나의 클래스 안에 다른 클래스를 정의한 클래스입니다.

public class A{ //외부클래스

    private class InnerA{ //내부클래스, 어디에 작성해도 상관 없습니다. 
        //내부클래스에서 외부클래스의 함수나 변수에 자유롭게 접근합니다.
    }
    //외부클래스에서는 내부클래스의 객체를 만들어 사용합니다.
}

내부 클래스는 외부 클래스의 멤버나 함수에 자유롭게 접근 가능하며, 대부분 private로 해당 외부 클래스 내에서만 사용하는 편입니다. 때문에 내부 클래스의 객체는 외부클래스에서 만들어져 사용됩니다.

사용이유

그래픽 이벤트 처리에 유용하다.
항상 함께 사용되는 두 클래스가 있다면, 같이 놔두는 것이 사용하는데 더 효율적이다.

무명클래스란?

클래스 이름이 없는 클래스로, 바디만 존재합니다. 이는 클래스를 정의하는 동시에 객체를 생성하기 때문에 한 개의 객체만 만들 수 있습니다.

new InheritClassName(){ ...  };

new 이후 상속받고자 하는 클래스나 인터페이스의 이름(InheritClassName)을 적어 사용합니다.
만약 SomeInterface를 implements한 무명클래스를 작성하고 싶다면,

SomeInterface s = new SomeInterface(){   ...  };

위와 같이 작성합니다.

InheritClassName클래스를 extends한 무명클래스를 작성하고 싶다면,

InheritClassName i = new InheritClassName(){   ...   }

로 작성하여 사용합니다.

무명 클래스에서도 변수와 메소드를 정의할 수 있는데 이 때 변수는 final 변수만 사용가능합니다.

반응형