Java 내부클래스 Inner class

Bumgu·2023년 6월 30일
0

이 포스트는 작성자의 다른 블로그에서 벨로그로 이전하며 가져오는 포스트 입니다.

public class OuterClass {
    private static int x = 10;
    class Inner{
        int getX() {
            return x;
        }
    }

내부클래스란 말 그대로 클래스 내부에 존재하는 클래스이다.
위 코드를 보자면 OuterClass 내부에 멤버스태틱변수 int x 와 내부클래스 Inner이 있다
Inner클래스 안에는 x의 값을 리턴해주는 메소드가 있다
그렇다면,
OuterClass
int x
class Inner
가 있고

Inner
메소드 getX()
가 있다

이제 메인 메소드로 넘어가보자

 public static void main(String[] args) {
        OuterClass c = new OuterClass();
        OuterClass.Inner i = c.new Inner();
        System.out.println(i.getX());
    }
}
  1. OuterClass 객체 생성 OuterClass c = new OuterClass();
  2. 내부 클래스 Inner클래스 객체 생성 OuterClass.Inner i = c.new Inner();
  3. 내부 클래스 참조 변수 i 통한 getX 호출
public class InnerExam3 {
    public void exec(){
        class Cal{ //메소드안에서 클래스 선언
            int value = 0;
            public void plus(){
                value++;
            }
        }//내부클래스 end
        Cal cal = new Cal();//3)메소드안에서 지역중첩클래스를 생성
        cal.plus();//4) 지역중첩클래스안의 멤버 메소드 호출
        System.out.println(cal.value);
    }//exec() end

    public static void main(String[] args) {
        //지역중첩클래스로 접근하려면
        InnerExam3 i = new InnerExam3(); //1)외부클래스 생성
        i.exec(); //2) 외부클래스의 멤버메소드를 호출
    }//main end

}//InnerExam3 end

이번엔 메소드의 내부 클래스를 알아보자

  • InnerExam3
  • 메소드exec()
  • class Cal
  • int value
  • 메소드 plus()

이건 메소드 내에서 끝을 내야한다 즉 exec메소드를 호출하면 new Cal()을 통한 객체생성, 내부클래스의 메소드plus()실행 및 출력까지

위에 순서도 써놨듯이

메인 메소드에서 외부클래스 InnerExam3 객체 생성후 exec()메소드를 호출하면

exec()메소드에 적혀있는대로 cal객체생성,메소드실행,출력을 하는것 조금 헷갈리지만 프로그램은 항상 순서대로 흘러간다는것만 기억하면 이해 하기 쉽다

profile
Software VS Me

0개의 댓글

관련 채용 정보