Java/Java

Java 10. 내부클래스 ( Inner Class )

shin96bc 2022. 3. 10. 20:49

(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