[스터디]Java의 정석 14일차

Kristopher·2022년 1월 9일
0

Java 스터디

목록 보기
14/31

(Ch7) 8. 내부 클래스 ~ 8.5 익명 클래스

내부 클래스란?

내부 클래스는 말 그대로 클래스 내부에서 선언되는 클래스이다. 클래스 내부에 클래스를 선언하는 이유는 두 클래스가 밀접한 관계를 맺고 있기 때문이다. 두 클래스의 멤버간의 접근성을 용이하게 한다는 점과 외부에 불필요한 클래스를 감출수 있어 복잡성을 줄일수 있다는 점이 장점이다.

class A{ // 외부 클래스
    ...
    class B { //내부 클래스
        ...
    }
    ...
}

내부 클래스도 변수 선언과 같은 위치에서 선언되며, 선언 위치에 따라 내부 클래스의 종류가 구분된다.

인스턴스 클래스 : 외부 클래스 멤버변수 선언 위치에서 선언하며 인스턴스 멤버처럼 다룬다.
스태틱 클래스 : 외부 클래스 멤버변수 선언 위치에서 선언하며 static 멤버처럼 다룬다.
지역 클래스 : 메소드나 초기화블록 내부에서 선언하며 선언된 영역 내부에서만 사용가능하다.
익명 클래스 : 선언과 동시에 객체를 생성하는 이름이 없는 일회성 클래스이다.

class Outer_class{
    class Instance_Innerclass{} //인스턴스 클래스
    static class Static_Innerclass{} // 스태틱 클래스
    
    void myMethod() {
        class Local_Innerclass{} // 지역 클래스
    }
}

각각의 클래스에서 선언할 수 있는 변수에는 제한이 있다. 먼저 인스턴스 클래스와 지역 클래스 내부에서는 인스턴스 변수나 final이 붙은 변수만 선언할 수 있다. 클래스 변수 내부에서는 인스턴스 변수, static 변수를 선언할 수 있다. 각각의 변수를 사용할 때도 조심해야 하는데, 인스턴스 클래스는 외부 클래스의 인스턴스 멤버를 객체 생성 없이 사용할 수 있지만, 스태틱 클래슨느 외부 클래스의 인스턴스 멤버를 객체 생성 없이 사용할 수 없다.

익명 클래스

익명 클래스의 가장 특이한 점은 이름이 없다는 것이다. 클래스의 선언과 객체 생성을 동시에 진행하기 때문에 일회성으로 사용가능하고 하나의 객체만을 생성할 수 있다.

Reference

Java의 정석
남궁성의 정석코딩

profile
개발자 지망생입니다.

0개의 댓글