본문 바로가기
Java

[자바 입문] 내부클래스

by sangyunpark 2023. 8. 18.

내부 클래스

클래스 안에 선언된 클래스

 

어느 위치에 선언하느냐에 따라서 4가지 형태가 있을 수 있다.

 

(1) 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언되는 경우

보통 중첩 클래스 혹은 인스턴스 클래스라고 한다.

public class InnerExam1{
	class Cal{
    	int value = 0;
        public void plus(){
        	value++;
        }
    }
    
    public static void main(String args[]){
    	InnerExam1 t = new InnerExam();
        InnerExam1.Cal cal = t.new Cal);
        cal.plus();
        System.out.println(cal.value);
    }
}

(2) 내부 클래스가 static으로 정의된 경우, 정적 중첩 클래스 또는 static 클래스 라고 한다.

필드 선언할 때 스태틱한 필드로 선언한 것과 같다. 이 경우에는 InnerExam2객체를 생성할 필요없이 new InnerExam2.Cal()로 객체를 생성할 수 있다.

public class InnerExam2{
        static class Cal{
            int value = 0;
            public void plus(){
                value++;
            }
        }

        public static void main(String args[]){
            InnerExam2.Cal cal = new InnerExam2.Cal();
            cal.plus();
            System.out.println(cal.value);

        }
    }

(3) 메소드 안에 클래스를 선언한 경우, 지역 중첩 클래스 또는 지역 클래스 라고 한다.

pubilc class InnerExam3{
	public void exec(){
    	class Cal{
        	int value = 0;
            public void plus(){
            	value++;
            }
        }
        
        Cal cal = new Cal();
        cal.plus();
        System.out.println(cal.value);
    }
    
    public static void main(String args[]){
    	InnerExam3 t = new InnerExam3();
        t.exec();
    }
}

(4) 익명 클래스 (다음 게시글에..)

'Java' 카테고리의 다른 글

[자바 입문] Exception  (0) 2023.08.21
[자바 입문] 익명클래스  (0) 2023.08.18
[자바 입문] 인터페이스  (0) 2023.08.18
[자바 입문] 클래스 형변환  (0) 2023.08.18
[자바 입문] 오버라이딩  (0) 2023.08.18