(1) 클래스안의 클래스
(2) 모양
ex) class AOut {
int i = 0;
void m(){
System.out.println("m()");
}
class AIn1{
int j = 1;
void m1(){
System.out.println("m1()");
}
}
static class AIn2{
static int k = 2;
static void m2(){
System.out.println("m2()");
}
}
}
(3) 객체 생성 방법
1) 외클.내클 변수 = new 외클().new 내클();
ex) AOut.AIn ai = new AOut().new AIn();
2) 외클.내클 변수 = new 외클.내클();
ex) AOut.AIn2 ai2 = new AOut.AIn2();
(4) 접근제한자
1) 내부클래스는 모든 접근제한자가 가능하다.
(5) main 위치
1) 내부 클래스는 static 이 가능하다.
2) static 이 아닌 inner class는 main()을 가질 수 없다.
<1> static 자원(멤버/메소드)을 아예 가질 수 없다.
3) static inner class 안에는 main()을 가질 수 있다.
(6) 왜 쓰는가? ( why? )
1) '외부클래스의 자원을 내것처럼 사용하려고' 쓴다.
(7) Tip
1) depth( 깊이 )는 무한대로 생성 가능하다.
2) class 안에 내부 interface, interface 안에 내부 class 도 가능하다.
3) interface 안에 내부 static interface 와 내부 일반 interface 도 가능하다.
4) inner interface 객체 생성 방법은 동일하다.
'Java > Java' 카테고리의 다른 글
Java 12. 쓰레드 ( Thread ) (0) | 2022.03.11 |
---|---|
Java 11. 어노테이션 ( Annotation ) (0) | 2022.03.11 |
Java 09. this 와 super (0) | 2022.03.10 |
Java 08. 제한자( Modifier ) 와 식별자 ( Identifier ) (0) | 2022.03.10 |
Java 07. 예외 처리 (0) | 2022.03.09 |