7-45~52 내부 클래스의 제어자와 접근성, 익명 클래스

oyeon·2020년 12월 21일
0

Java 개념

목록 보기
2/70

7-45~50 내부 클래스의 제어자와 접근성

  • 내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일
    (일반 클래스는 제어자로 default와 public만 되는 반면 내부 클래스는 전체 제어자 사용 가능)

  • static 멤버(cv)를 가지기 위한 내부 클래스는 당연히 static class 이어야 한다.
    (why? cv는 객체생성 없이 사용 가능해야한다. 만약 내부 클래스가 static이 아니면 객체를 생성해야 사용 가능. -> 모순 발생)
    (But, 상수(final static)의 경우 다른 내부 클래스에서도 허용)

  • 객체 iv(인스턴스 멤버)가 cv(static 멤버)를 쓸 수 있지만, cv가 iv를 쓸 수 없으므로 static 내부 클래스에서는 외부 클래스의 인스턴스 멤버에 접근할 수 없다.

  • 내부 클래스에서는 외부 클래스의 private 멤버도 접근 가능하다.

  • 지역 내부 클래스(클래스 안의 메서드 안의 클래스)에서는 상수만 접근 가능
    (why? 지역 변수는 메서드 종료와 함께 소멸. 지역 변수(lv)보다 내부 클래스의 객체가 더 오래 존재 가능하기 때문. 상수는 constant pool에서 따로 관리한다.)

7-51~52 익명 클래스

  • 이름이 없는 1회용 클래스. 정의와 생성을 동시에 한다.
new 조상클래스이름(){
	// 멤버 선언 (클래스 내용)
}
	또는
    
new 구현인터페이스이름(){
	// 멤버 선언 (클래스 내용)
}
class Ex{
    Object iv = new Object(){ void method(){} };	// 익명 클래스
    static Object cv = new Object(){ void method(){} };	// 익명 클래스
    
    void myMethod() {
    	Object lv = new Object(){ void method(){} };	// 익명 클래스
    }
}
profile
Enjoy to study

0개의 댓글