Back-End/JAVA

[Java] 내부 클래스(inner class)

챌링킴 2021. 5. 28. 19:30
반응형

1) 내부클래스

클래스 내부에 클래스를 선언하여 외부 클래스의 필드에 용이하게 접근하기 위해서 사용한다.

내부 클래스의 필드를 사용하기 위해서는 외부 클래스 객체에서 내부 클래스를 객체화해야한다.

하지만 외부 클래스의 필드에서는 자신이랑 같이 올라와있는 내부 클래스를 바로 객체화 할 수 있다.

 

외부클래스명 out = new 외부클래스생성자( );

외부클래스명.내부클래스명 in = out.new 내부클래스생성자( );

 

2) 내부클래스 사용이유

1. 상속처럼 이용

   외부 클래스의 필드를 마치 내것처럼 접근하여 사용하기 위함

2. 캡슐화

   외부 클래스가 없다면 내부 클래스도 존재할 수 없기 때문에

   다른 클래스에서 접근하지 못하도록 내부 클래스를 숨기기 위함(직접 객체화하지 말라는 뜻)

 

3) 가정

A 클래스에서 b( ) 메소드가 자주 쓰이고 이 작업은 B 클래스를 만들어야 쉽게 관리할 수 있다.

하지만 다른 클래스에서는 b( ) 메소드가 필요없거나 B 클래스를 외부에 노출시키고 싶지 않을 때 A 안에 B를 선언하여

내부 클래스로 만들어 사용한다.

public class innerTest {
	public static void main(String[] args) {
		Out out = new Out();
		Out.In in = out.new In();
		Out.In in2 = out.getInstance();
		in.f();
	}
}
class Out {
	int data1 = 10;

	In getInstance() {
		return new In();
	}

	class In { // 내부클래스
		int data2 = 20;

		void f() {
			System.out.println(data1);
			System.out.println(data2);
		}
	}
}
반응형

'Back-End > JAVA' 카테고리의 다른 글

[Java] 예외 처리  (0) 2021.05.28
[Java] 익명 클래스(anonymous inner class)  (0) 2021.05.28
[Java] 인터페이스(interface)  (0) 2021.05.27
[Java] 추상 클래스(abstract)  (0) 2021.05.27
[Java] 접근 권한 제어자(접근제어자)  (0) 2021.05.27