본문 바로가기

JAVA

중첩 클래스(nested class) 기본 실습 4가지

member Inner 클래스


public class MemberEx {

        int a = 10;

        int b = 20;

        static int c = 30;

       

        //Inner Class

        class InnerEx{

               public int d = 40;

              

               public void print(){

                       System.out.println(a);

                       System.out.println(b);

                       System.out.println(c);

               }

        }

}


 

 

 

 


//member Inner 클래스 실습

public class InnerMain {

 

        public static void main(String[] args) {

               MemberEx member = new MemberEx();     //outer class 선언

               MemberEx.InnerEx inner = member.new InnerEx();       //inner class 선언

              

               inner.print(); //선언한 inner class 메서드 실행

              

               inner.d = 40;

               System.out.println(inner.d);

 

        }

}


 

 

 

 

출력물


10
20
30
40


 

 

 

 

 

local Inner 클래스


public class OuterEx {

        int a = 10;

        private int b = 20;

        static int c = 30;

       

        public void outerMethod(){

               int d = 40;

               final int e = 50;

              

               class InnerEx{

                       public void print(){

                              //멤버변수나 상수만 접근가능

                              System.out.println(a);

                              System.out.println(b);

                              System.out.println(c);

//                            System.out.println(d); //접근 불가능

                              System.out.println(e); //final  = 상수 : 접근 가능

                       }

               }

               InnerEx inner = new InnerEx();

               inner.print();

              

        }

}


 

 

 

 


//local Inner 클래스 실습

public class InnerMain {

 

        public static void main(String[] args) {

               OuterEx outer = new OuterEx();

               outer.outerMethod();

        }

}


 

 

 

 

출력물


10
20
30
50


 

 

 

 

 

static Inner 클래스


public class OuterEx {

        int a = 10;

        private int b = 20;

        static int c = 30;

       

        static class InnerEx{

               static int d = 40;

              

               //static 멤버만 접근가능

               public void print(){

//                     System.out.println(a); //static X : 접근불가능

//                     System.out.println(b); //static X : 접근불가능

                       System.out.println(c);

                       System.out.println(d);       

               }

              

        }

}


 

 

 


//static Inner 클래스 실습

public class InnerMain {

 

        public static void main(String[] args) {

               OuterEx.InnerEx inner = new OuterEx.InnerEx();       //inner클래스 선언

               inner.print();

              

        }

}


 

 

 

 

출력물


30
40


 

 

 

 

 

anonymous Inner 클래스


public interface flyer {

        public abstract void fly();  //추상메서드 선언

}


 

 

 


//anonymous Inner 클래스 실습

public class InnerMain {

 

        public static void main(String[] args) {

              

               flyer f = new flyer() {

                      

                       @Override

                       public void fly() {

                              System.out.println("Flyer 인터페이스 구현");                  

                       }

               };  //";" 반드시 있어야 !!!

              

               f.fly();

 

        }

}


 

 

 

 

출력물


Flyer 인터페이스 구현