JAVA 내부 클래스·멤버 클래스

구성원 클래스
클래스 내의 변수와 방법과 마찬가지로 클래스를 구성원으로 성명할 수 있다.
static을 가진 구성원 클래스와 비static 구성원 클래스는 완전히 다르다.
구성원은 필드, 메서드, 내부 클래스입니다.
구성원 중의 내부 반은 구성원류다.
구성원 선언에 관해서는 static을 넣을지 안 넣을지 사용 방법에 큰 차이가 나는 것이 특징이다.

static 구성원 클래스


static 구성원 클래스와 외부 클래스 및 실례의 관계가 비교적 희박하다
"내부류가 아니라 일반적인 다른 류로 선언하는 상황"
”.
static 멤버반이란
일반 기타 반과static 구성원 반의 차이
・기본적으로 "외부 클래스. 구성원 클래스"로 사용됩니다.
· 외부 반의 구성원을 방문할 수 있으나static에만 한정됩니다.
_________________________________________________________ ・기본적으로 "외부 클래스. 구성원 클래스"로 사용됩니다.→
Outer.Innner ic = new Outer.Inner();

static 구성원 클래스 없음


static이 없는 구성원 클래스 (내부 클래스) 는
외부 클래스에서 발생하는 각 실례와 강렬한 관련이 있는 클래스 정의.
비static의 내부 클래스는 다음과 같습니다.
외부 클래스 구성원 중 하나로 정의된 내부 클래스에서
static이 지정되지 않은 것을 가리킨다.
멤버 클래스 인스턴스는 다음과 같습니다.
반드시 어떤 외부류의 실례와 결합된 형식으로 생겨난다.
static이 없는 멤버반은...
・기본적으로 "외부 클래스. 구성원 클래스"로 사용됩니다.
· 링크의 외부 실례에 접근할 수 있는 비static 구성원입니다.
_________________________________________________________ static가 없는 구성원 클래스의 실례 생성은 다음과 같은 특수 문법을 사용합니다.
static이 없는 구성원급의 실례화
・외부 클래스 인스턴스 변수 이름새 구성원 클래스 구조기 호출
ex)
        Outer o = new Outer();//まず外部インスタンスを生成
        Outer.Inner = o.new Inner();//oと繋がるInnerインスタンスを生成
▪️Test93.javastatic 구성원 클래스 사용 예시
//▪staticメンバークラスの利用例

//外部クラス
class Outer {
    int outerField;
    static int a;

    // staticなメンバークラス
    static class Inner {
        void innerMethod() {
            // staticな外部クラスメンバのみ利用可
            a = 10;
        }
    }

    // 外部クラスの中にあるメソッド
    void outerMethod() {
        // 外部クラスからはInnerで利用可
        Inner ic = new Inner();
    }
}

// 無関係なクラス
class Test93 {
    public static void main(String[] args) {
        // 無関係なクラスからstaticなメンバークラスにアクセスするにはOuter.Innerで利用
        Outer.Inner ic = new Outer.Inner();
    }
}

내부 클래스(내부 클래스)


내부반
중첩(=중첩) 클래스에 static 선언이 없는


▪️Test94.java 비static 구성원 클래스(내부 클래스)의 사용 예시 ①
//*非staticメンバークラス(インナークラス)の利用例
class Outer {
    static int outerField;
    int b;

    class Inner {
        void innerMethod() {
            outerField = 10;
            b = 5;
        }
    }

    void outerMethod() {
        Inner ic = new Inner();
    }

}

class Test94 {
    public static void main(String[] args) {
        Outer o = new Outer();
        Outer.Inner in = o.new Inner();
    }
}
▪️Test95.java 비static 구성원 클래스(내부 클래스)의 사용 예시 ②
//*非staticメンバークラス(インナークラス)の利用例
class OuterClass {
    int outerField;
    int c;

    //インナークラス
    class InnerClass {
        void method2() {
            c = 13;
        }

    }

    void method() {
        InnerClass ic = new InnerClass();
    }

    InnerClass ic3 = new InnerClass();
}

class Test95 {
    public static void main(String[] args) {
        // 全く無関係なクラスからは
        // InnerClass ic2 = new InnerClass();では
        // InnerClassのインスタンス生成できない
        OuterClass oc = new OuterClass();
        // 非staticメンバークラスのインスタンス化
        OuterClass.InnerClass oi = oc.new InnerClass();
    }
}

총결산


static의 내부반은 내부반이 아니라 구성원이다.
Nested Class

좋은 웹페이지 즐겨찾기