내부 클래스 (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 |
댓글