Small Grey Outline Pointer Java :: 내부클래스 (inner class)
본문 바로가기
Dev./java

Java :: 내부클래스 (inner class)

by sso. 2022. 7. 16.

내부 클래스 (ineer class)
클래스 내부에 클래스를 선언하여 외부 클래스의 필드 접근에 용이하기 위함
내부 클래스의 필드를 사용하기 위해서는 외부 클래스에서 내부 클래스를 객체화 해야 한다

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

 


[내부 클래스를 사용하는 이유]

-캡슐화 
A클래스에서 b라는 작업이 자주 쓰이고, 이 작업은 B클래스를 만들어야 쉽게 관리할 수 있음
하지만 다른 클래스에서 b작업이 필요없거나, B클래스를 외부에 노출시키고 싶지 않을 때 사용한다

내부 클래스는 GUI(Graphic User Interface) 개발시 많이 사용 된다
예를들어 a라는 버튼과 b라는 버튼이 있다면,
두 버튼의 기능이 서로 다르다면 클래스를 별도로 만드는 것 보다 내부클래스로 만들어 사용하는 것이 적합하다

 

 

package day22;

public class OutClass {
	int outData;
	
	public OutClass() {
		System.out.println("외부 클래스 생성자 호출 됨");
	}
	
	public void showOuter() {
		System.out.println("외부 클래스의 메서드 호출 됨");
	}
	
	public class InnerClass{ //내부 클래스 선언 후 외부에 있는 필드들에 접근하기
		int inData;
		
		public InnerClass() {
			System.out.println("내부클래스의 생성자 호출 됨");
		}
		
		public void showInner() {
			outData=20;
			
			System.out.println("내부클래스의 메서드 호출 됨");
			System.out.println("outData: "+outData);
			showOuter();
		}
	}
	public static void main(String[] args) {
		OutClass out = new OutClass();
		//외부클래스명.내부클래스명 객체명 = 외부클래스객체명.new 내부클래스 생성자();
		OutClass.InnerClass in = out.new InnerClass(); //이렇게 해야 내부클래스에 접근 할 수 있다
		in.showInner();
	}
	
}

외부 클래스 생성자 호출 됨
내부클래스의 생성자 호출 됨
내부클래스의 메서드 호출 됨
outData: 20
외부 클래스의 메서드 호출 됨

728x90

'Dev. > java' 카테고리의 다른 글

Java :: 추상클래스 & 인터페이스  (0) 2022.07.03
Java :: 인터페이스  (0) 2022.07.03
[Java] TMS 대중교통 터미널 시스템 만들기  (0) 2022.06.17
Java 추상 클래스  (0) 2022.06.12
Java :: 다형성/ 싱글턴 패턴  (0) 2022.06.12

댓글