728x90

내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근 가능 및 코드의 복잡성 감소

클래스는 접근제어자가 default와 public만 가능하지만

내부 클래스는 모든 접근 제어자가 가능

class A {
	int i = 10;
    static int c = 15;
    class B {
    	//객체 생성 없이 A 클래스의 멤버 접근 가능
        void pri() {
        	System.out.println(i); // 출력가능
            System.out.println(c); // 출력가능
        }
    }
    
    static class C {
    	void static_pri() {
        	System.out.println(i); // 출력불가능
            System.out.println(c); // 출력가능
        }
    }
    
    void methodA() {
    	final int x= 5; // 외부 클래스의 지역 변수는 final(상수)에만 접근 가능
        int t = 3; // 값이 변하지 않는다면 상수 취급이라 final 생략 가능하지만
        int t = 2; // 이렇게 나중에 값이 바뀐다면 상수 취급을 못받아 오류 발생
    	class D {
        	System.out.println(i); //출력가능
            System.out.println(c); //출력가능
            System.out.println(x); //출력가능
            System.out.println(t); //출력불가능
        }
    }
}

public class Main {
	public static void main() {
    	// 인스턴스 내부 클래스는 외부 클래스를 먼저 인스턴스 생성한 뒤에 사용가능
    	A a = new A(); // 외부 클래스 먼저 인스턴스 생성
        A.B b = a.new B(); // 외부 인스턴스를 통해 내부 인스턴스 생성
        // 스태틱 내부 클래스는 외부 클래스 생성 없이 바로 사용가능
        A.C c = new A.C();
    }
}

'Java > Notion' 카테고리의 다른 글

Object 클래스  (0) 2023.04.30
예외  (0) 2023.04.29
인터페이스  (0) 2023.04.25
추상화  (0) 2023.04.25
다형성  (0) 2023.04.24

+ Recent posts