학습 노트:제10 장(내부 류)

디 렉 터 리 자바 프로 그래 밍 사상(1)1~4 장:자바 프로 그래 밍 사상 개술(2)5 장:자바 프로 그래 밍 사상 초기 화 및 정리(3)6 장:접근 권한 자바 프로 그래 밍 사상(4)7 장:재 활용 류 자바 프로 그래 밍 사상(5)8 장:다 중 자바 프로 그래 밍 사상(6)9 장:인터페이스 자바 프로 그래 밍 사상(7)10 장:내부 류 자바 프로 그래 밍 사상(8)11 장:소지 대상 자바 프로 그래 밍 사상(9)제1 2 장:이상 자바 프로 그래 밍 사상(10)제1 3 장:문자열 자바 프로 그래 밍 사상(11)제1 4 장:유형 정보 자바 프로 그래 밍 사상(12)제1 5 장:범 형 자바 프로 그래 밍 사상(13)제1 6 장:수조 자바 프로 그래 밍 사상(14)제1 7 장:용기 자바 프로 그래 밍 사상(15)제1 8 장 깊이 연구/O 시스템 자바 프로 그래 밍 사상(16)제1 9 장:자바 프로 그래 밍 사상(17)제2 0 장:자바 프로 그래 밍 사상(18)제2 1 장 주석:병발
제10 장 내부 클래스
목차
10.1 외부 클래스 로 연결
10.2.this 와.new
10.3 익명 내부 클래스
10.4 자바 내장 클래스
10.5 왜 내부 클래스 가 필요 합 니까?
10.6 패키지 와 리 셋
10.7 부분 내부 클래스
10.8 자바 인터페이스 와 내부 클래스 요약
10.1 외부 클래스 로 연결
자바 비 static 의 일반 내부 클래스 는 외부 클래스 의 모든 구성원 에 대한 접근 권 을 자동 으로 가지 고 있 습 니 다.
a.자바&C++의 차이 점:
자바 일반 내부 클래스 는 외부 대상(enclosing object)의 모든 구성원 에 게 접근 할 수 있 으 며 특별한 조건 이 필요 하지 않 습 니 다.C++내장 류 의 디자인 은 단순 한 이름 숨 김 메커니즘 일 뿐 외곽 대상 과 연락 이 없고 은밀 한 접근 권 도 없다.
b.자바 실현 원리:
자바 에서 어떤 클래스 가 내부 클래스 대상 을 만 들 때 이 내부 클래스 대상 은 반드시 그 외곽 클래스 를 가리 키 는 대상 의 인용 을 비밀리에 포착 할 것 이다.그리고 이 외곽 류 의 구성원 을 방문 할 때 그 인용 으로 외곽 류 의 구성원 을 선택한다.이 세부 사항 들 은 컴 파일 러 가 처리 한 것 이다.자바 의 교체 기 는 이 특성 을 재 활용 했다.
 
10.2.this 와.new
자바 비 static 의 일반 내부 클래스 는.this 를 사용 하여 외곽 대상 의 인용 을 되 돌려 줍 니 다.
외곽 대상 은.new 를 사용 하여 내부 클래스 대상 을 만 들 수 있 습 니 다.
public class DotThis{
    public class Inner{
        public DotThis outer(){
            return DotThis.this; // a plain "this" would be Inner's "this"
        }
    }
    public Inner inner(){ return new Inner(); }
    public static void main(String[] args){
        DotThis dt = new DotThis();
        DotThis.Inner dti = dt.inner();
        dti.outer().f();
    }
}

10.3 익명 내부 클래스
Anonymous Inner Class.:class name 의 내부 클래스 를 정의 하지 않 았 습 니 다.
 
10.4 자바 내장 클래스
내장 클래스:내부 클래스 가 static 로 설명 되 었 을 때 외곽 대상 의 인용 을 포함 하지 않 습 니 다.this 는 내장 클래스 라 고 합 니 다.(C+내장 클래스 와 대체적으로 비슷 합 니 다.다만 C+에 서 는 개인 구성원 에 접근 할 수 없고 자바 에 서 는 접근 할 수 있 습 니 다)
-끼 워 넣 기 클래스 를 만 들 고 외곽 대상 이 필요 하지 않 습 니 다.
-포 함 된 대상 에서 비정 상 외곽 대상 에 접근 할 수 없습니다.
10.4.1 인터페이스 내부 의 클래스
내장 류 는 인터페이스의 일부분 으로 사용 할 수 있 습 니 다(정상 적 인 상황 에서 인터페이스 내부 에 어떠한 코드 도 설치 할 수 없습니다).인터페이스 에 있 는 모든 종 류 는 자동 으로 Public 와 static 입 니 다.클래스 는 static 이기 때문에 인터페이스 의 네 임 스페이스 에 끼 워 넣 을 뿐 인터페이스의 규칙 을 위반 하지 않 습 니 다.
10.4.2 다 중 플러그 인 클래스 에서 외부 클래스 에 접근 하 는 구성원
내부 클래스 가 몇 층 으로 묶 여 있 는 지 는 중요 하지 않 습 니 다.끼 워 넣 은 외곽 클래스 의 모든 구성원 에 게 투명 하 게 접근 할 수 있 습 니 다.
 
10.5 왜 내부 클래스 가 필요 합 니까?
내부 클래스 는 특정한 클래스 에서 계승 되 거나 특정한 인 터 페 이 스 를 실현 하 며 내부 클래스 의 코드 작업 은 외곽 클래스 의 대상 을 만 듭 니 다.그래서 내부 류 가 외곽 류 에 들 어 가 는 창 을 제공 했다 고 볼 수 있다.
내부 류 가 하나의 인 터 페 이 스 를 실현 하 는 것 과 외곽 류 가 이 인 터 페 이 스 를 실현 하 는 것 은 어떤 차이 가 있 습 니까?정 답 은 후 자 는 항상 인터페이스 가 가 져 다 주 는 편 의 를 이용 하 는 것 이 아니 라 인터페이스의 실현 이 필요 하 다 는 것 이다.그래서 내부 류 를 사용 하 는 가장 매력 적 인 이 유 는:
모든 내부 류 는 하나의(인터페이스의)실현 을 독립 적 으로 계승 할 수 있 기 때문에 외곽 류 가 특정한(인터페이스의)실현 을 계승 하 든 내부 류 에 영향 을 주지 않 는 다.
내부 류 는 다 중 상속 의 해결 방안 을 완전 하 게 만 들 었 다.인 터 페 이 스 는 일부 문 제 를 해 결 했 고 내부 류 는'다 중 계승'을 효과적으로 실현 했다.즉,내부 클래스 는 자바 로 하여 금 여러 개의 비 인터페이스 유형(클래스 또는 추상 류)을 계승 하 게 한다.
 
10.6 패키지 와 리 셋
패 킷 닫 기(closure)는 호출 가능 한 대상 으로 일부 정 보 를 기록 합 니 다.이 정 보 는 역할 영역 을 만 드 는 데 서 나 옵 니 다.이 정 의 를 통 해 알 수 있 듯 이 내부 클래스 는 대상 을 대상 으로 하 는 패키지 입 니 다.외부 클래스 대상(내부 클래스 를 만 드 는 역할 영역)의 정 보 를 포함 할 뿐만 아니 라 다른 클래스 대상 을 가리 키 는 인용(.this)도 자동 으로 가지 고 있 습 니 다.이 역할 영역 에서 내부 클래스 는 모든 구성원 을 포함 하여 private 구성원 을 포함 합 니 다.
리 셋(callback)은 리 셋 을 통 해 대상 이 정 보 를 가 져 올 수 있 습 니 다.이 정 보 는 잠시 후 초기 대상 을 호출 할 수 있 습 니 다.자바 에는 포인터 가 없 으 며 내부 클래스 가 제공 하 는 패 킷 기능 을 통 해 리 셋 이 가능 합 니 다.
 
10.7 부분 내부 클래스
코드 블록|방법 에서 정 의 된 클래스 입 니 다.
응용 장면:class 정의&new Object()는 모두 방법 내부 에 있 습 니 다.
 
 
10.8 자바 인터페이스 와 내부 클래스 요약
자바 의 인터페이스 와 내부 유형 은 다른 대상 을 대상 으로 하 는 개념 보다 더욱 심오 하고 복잡 하 다.C++는 이런 것들 이 없 으 면 이들 을 결합 시 켜 C++에서 다 중 계승 으로 해결 할 수 있 는 문 제 를 해결 할 수 있다.

좋은 웹페이지 즐겨찾기