자바 내부 클래스 와 정적 클래스

3173 단어 자바
자바 내부 클래스 와 정적 클래스  http://zhanqi.net/blog/525/
 
자바 내부 클래스 와 정적 클래스 는 일반적으로 자주 사용 하지 않 습 니 다. 응용 프로그램 프레임 워 크 에서 자주 사용 되 고 내부 클래스 를 이용 하여 리 셋 을 실현 할 수 있 습 니 다. 그 중에서 비교적 중요 한 것 은
내부 류 는 다 중 계승 을 실현 할 수 있다. 내부 류 는 여러 개의 비 인터페이스 유형, 즉 유형 과 추상 류 를 계승 할 수 있 기 때문이다.
정상 적 인 상황 에서 인터페이스 에는 어떠한 코드 도 쓸 수 없 지만 인터페이스 에서 정적 내부 류 를 실현 한 다음 에 공공 코드 를 쓸 수 있다.
 
 
내부 류
1: 내부 클래스 는 일반 클래스 의 모든 특성 을 가지 고 있 으 며, 클래스 구성원 변수의 특성 도 가지 고 있 습 니 다.
2: 내부 클래스 는 외부 클래스 의 구성원 변수, 속성, 방법, 기타 내부 클래스 에 접근 할 수 있 습 니 다.
 
정적 클래스
1: 내부 클래스 만 static 로 설명 할 수 있 고 정적 내부 클래스 라 고 할 수 있 습 니 다.
2: 정적 내부 클래스 만 정적 구성원 을 가 질 수 있 고 일반 내부 클래스 는 일반 구성원 만 정의 할 수 있 습 니 다.
3: 정적 클래스 는 정적 방법 과 마찬가지 로 외부 클래스 의 정적 구성원 에 게 만 접근 할 수 있 습 니 다.
4: 외부 클래스 의 정적 방법 에서 내부 클래스 에 접근 하면 정적 내부 클래스 에 만 접근 할 수 있 습 니 다.
/**
 *    ,      static
 * 
 * @author zhanqi
 * 
 */
public class OuterClass {

    private int ab = 1;
    private static int sab = 2;

    /**
     *      
     */
    public class NormalInnerClass {

        // private static int age = 22;
        private int age = 22; //      static

        public NormalInnerClass() {
            //                
            System.out.println(ab);
            System.out.println(sab);
        }
    }

    /**
     *      
     */
    public static class StaticInnerClass {
        //                
        private static int age = 22;
        private int age2 = 22;

        private void echo() {
            // System.out.println(ab);
            System.out.println(sab);//             
        }
    }
}

 
내부 류 의 실례 화
1: 내부 클래스 에 접근 하려 면 외부 클래스, 내부 클래스, OutClass. InnerClass 를 사용 해 야 합 니 다.
2: 일반 내부 클래스 는 외부 클래스 의 인 스 턴 스 에 연결 해 야 합 니 다.
3: 정적 내부 클래스 는 직접 new
/**
 *         
 */
public class OuterClass {

    /**
     *     
     */
    public void method() {
        StaticInnerClass sic = new StaticInnerClass();
        NormalInnerClass nic = new NormalInnerClass();
    }

    /**
     * Main
     */
    public static void main(String[] args) {
        //       ,        ,     
        // NormalInnerClass nic = new NormalInnerClass();
        StaticInnerClass sic = new StaticInnerClass();
    }
}

/**
 *         
 */
class Test {
    public static void main(String[] args) {
        /**
         * 1:        ,    :   .   ,OutClass.InnerClass
         * 2:                  
         * 3:          new
         */
        OuterClass.StaticInnerClass sic = new OuterClass.StaticInnerClass();
        // OuterClass.NormalInnerClass n = new OuterClass.NormalInnerClass();

        OuterClass oc = new OuterClass();
        OuterClass.NormalInnerClass nic = oc.new NormalInnerClass();
    }
}

 

좋은 웹페이지 즐겨찾기