본문 바로가기

객체 지향 프로그래밍 - 중첩 선언과 익명 객체

정적 멤버 클래스

정적 멤버 클래스

  • static 키워드와 함께 A 클래스의 멤버로 선언된 B 클래스


    출처, 이것이 자바다


  • 정적 멤버 클래스는 주로 default 또는 public 접근 제한을 가진다.

package ch09.sec03.exam01;

/*
 * 중첩클래스
 *  - 정적(static)멤버 클래스
 */

public class A {

    //중첩 클래스 - 인스턴스 클래스
    class C {};

    //중첩 클래스 - 정적 클래스 선언(정의)
    static class B {}

    //인스턴스 필드사용
    B field1 = new B();


    //정적 필드사용
    static B field2 = new B();

    //생성자
    A() {
        B b = new B();
    }

    void method1() {
        B b = new B();
    }

    static void method2() {
        B b = new B(); 
    }
}

package ch09.sec03.exam01;

public class AExample {

    public static void main(String[] args) {

        //1)인스턴스 C클래스 객체 생성하기 : A클래스 객체 생성이 먼저 진행되어야 한다.
        A a = new A();

        A.C c = a.new C();

        //2)정적 클래스 B 객체 생성하기 : A클래스 객체 생성 없이 가능.
        A.B b = new A.B();
    }

}

package ch09.sec03.exam02;

public class A {

    static class B{

        int field1 = 1;

        B() {
            System.out.println("B-생성자 실행");
        }

        void method1() {
            System.out.println("B-method1 실행");
        }
    }
}

package ch09.sec03.exam02;

public class AExample {

    public static void main(String[] args) {

        A.B b = new A.B();
        System.out.println(b.field1);
        b.method1();

    }

}

'객체 지향 프로그래밍 - 중첩 선언과 익명 객체' 카테고리의 다른 글

익명 객체  (0) 2023.01.25
바깥 멤버 접근  (0) 2023.01.25
로컬 클래스  (0) 2023.01.25
중첩, 인스턴스 멤버 클래스  (0) 2023.01.25