JAVA 내부클래스

박승현·2022년 3월 27일
0

JAVA

목록 보기
13/16

내부 클래스

내부 클래스는 중첩 클래스라고도 부르며 두 클래스 멤버들 간에 서로 쉽게 접근할 수 있도록 만든 것이다. 내부 클래스는 외부 클래스의 모든 멤버들을 마치 자신의 멤버인 것처럼 사용할 수 있으며 코드의 복잡성을 줄일 수 있다.

클래스들은 상호작용을 하며 서로의 멤버 변수에 접근한다. 이 때 어떠한 클래스의 관계가 긴밀하여 내부에 클래스가 있는 것이 효율적이 때 내부 클래스를 사용한다.

class OuterClass{ // 외부클래스
	class InnerClass{ // 내부클래스
    	//...
    }
    //...
}

내부 클래스를 사용하면 추가적으로 코드를 간결하게 만 들 수 있다. 하나의 클래스의 내부에 클래스를 감추어 캡슐화할 수 있게 된다.

내부 클래스의 종류

내부 클래스는 클래스의 내부에 선언되는 클래스이므로 마치 클래스의 멤버 변수와 같이 구별된다. 선언되는 위치에 따라 인스턴스 클래스, 스태틱 클래스, 지역 클래스, 익명 클래스로 구별 된다.

  • 인스턴스 클래스
Class OuterClass{
	class InnerInstance{}
}
  • 스태틱 클래스
class OurterClass{
	static class InnerStatic{}
}
  • 지역 클래스
class OuterClass{
	void A(){
    	class InnerLocal{}
    }
}

내부 클래스의 접근성

내부 클래스도 클래스이기 때문에 선언부에 제어자를 사용한다.

Class OuterClass{
	abstract class InnerInstance{
    	//...
    }
}

내부 클래스는 멤버변수와 같이 다루어지기 때문에 접근제어자(private, protected)를 사용한다.

Class OuterClass{
	private class InnerInstance{
    	//...
    }
    
    protected class InnerInstance2{
    	//...
    }
}

익명 클래스

익명 클래스 또는 무명 클래스는 말 그대로 이름이 없는 클래스 이다.

  • 익명 클래스와 비교를 위해 기존에 사용하던 클래스의 형태
class Some{
	private int a = 3;
    
    int getter(){
    	return this.a;
    }
    
    void setter(int a){
    	this.a = a;
    }
}
  • 익명 클래스의 형태
Some anony = new Some() {
	private int a = 10;
    int getter(){
    	return this.a;
    }
    
    void setter(int a){
    	this.a = a;
    }	
}; // 세미콜론 주의
profile
그냥 해보자 안되더라도 해보자 끝까지 해보자

0개의 댓글

관련 채용 정보