혼공자 09-1

Merong·2022년 10월 21일
0

혼공자

목록 보기
3/4

중첩 클래스와 중첩 인터페이스

중첩 클래스

중첩 클래스란 클래스 내부에 선언한 클래스

중첩 인터페이스

클래스 내부에 선언한 인터페이스


내부 클래스

1. 멤버 클래스

클래스의 멤버로서 선언되는 클래스

Class A{
	class B{
   	...
   }
}

2. 로컬 클래스

생성자 또는 메소드 내부에서 선언되는 중첩 클래스
메소드를 사용할때만 생성되고 메소드가 종료되면 없어짐

Class A{
	void method(){
    	class B{
    		...
    	}
    }
}

내부 클래스는 자신을 둘러싸는 외부 클래스의 인스턴스 변수와 인스턴스 메서드에 접근할 수 있습니다. 내부 클래스도 외부 클래스에 안에 있는 것이므로 아래와 같이 외부 클래스의 private 멤버에 접근할 수 있습니다.


class OuterClass {
	private int a = 10;
	
   class InnerClass {
   	public void print() {
   		System.out.println("OuterClass.a: " + a);
   	}
   }
}

인스턴스 멤버 클래스

인스턴스 멤버 클래스는 static 키워드 없이 중첩 선언된 클래스를 말합니다
인스턴스 필드와 메소드만 선언가능 합니다

Class A{
	Class B{
    B() {} ----- 생성자
    int field1;  ------인스턴트 필드
    static int field2; ----정적필드(X)
    void method1(){} -----인스턴스 메소드
    static void method2(){} 정적 메소드(x)
    }
}

인스턴스 멤버 클래스의 사용법

A 클래스 외부에서 사용

A a = new A();
A.B b =a.new B();
b.field1 = 3;
b.method();

A클래스 내부에서 사용

Class A{
	Class B {...}

void methodA(){
	B b = new B();
	b.field1 = 3;
	b.method();
	}
}

정적 멤버 클래스 사용법

static 키워드로 선언된 클래스 정적 멤버 클래스는 모든 종류의 필드와 메소드를 선언할수 있습니다

Class A{

static class C{
	C() {]
	int field1;
	static int field2;
	void method1(){}
	static void method2(){]
	}
}

클래스 외부에서 사용

A.C c = new A.C();
c.field1 = 3;
c.method1();
A.C.field2 =3;
A.C.method2();

로컬 클래스

중첩 클래스는 메소드 내부에서 선언이 가능한데 이걸 로컬 클래스라고 함
접근 제한자및 static을 붙힐수 없습니다 메소드 내부에서만 사용되므로 접근을 제한할 필요가 없기때문
로컬클래스 내부에는 인스턴스 필드와 메소드만 선언 가능

중첩 인터페이스

클래스의 멤버로 선언된 인터페이스를 말함
중첩 인터페이스는 인스턴스 멤버 인터페이스 정적 멤버 인터페이스 모두 가능합니다

0개의 댓글