C. Java

정적 중첩 클래스

sfeg 2017. 7. 2. 21:41

정적 중첩 클래스 

=> 중첩클래스 내부에 Static 멤버를 포함할 수 있는 형태( 단, 바깥쪽 클래스의 non-static 멤버
    포함은 불가하다
)

 
정적 중첩 클래스 객체 생성
= > Outer.inner oi  = new Outer.Inner();
 
ex) 
 
class Outer1
{
    private int x=100;           //필드
    private static int y=200;
 
    public Outer1(){}             //생성자
 
    public void disp(){ System.out.println("x+y=" + (x+y)); }        //메소드
 
 
 //정적 중첩 클래스
    static class Inner1{
  
        private int a=200;              //필드
        private static int b= 100;     // 정적 중첩클래스는  static멤버를포함할수있다.
 
        public Inner1(){}               //생성자
  
        punlic void disp_in(){                         //메소드
            System.out.println("a+b=" + a+b);
            //System.out.println("x=" + x);     // -> 바깥쪽 클래스의 non-static 멤버필드를 사용불가
                                                                   non-static필드가 있는 
메소드도 사용불가하다.
            //disp();
            
             System.out.println("y=" + y);       // -> 바깥쪽 클래스의 Static 멤버필드만 사용할수 있다.

        } 
    } 
}
 
 
 
public calss Exam{
    public static void main(String[] ar){
        Outer1.Inner1  oi     = new Outer1.Inner1();    // 정적 중첩클래스 객체생성시.. 바깥쪽 클래
                                                                           스 객체 생성없이
바로 객체 생성한다.
        oi.disp_in();

 }
}