728x90
반응형
SMALL

중첩 클래스

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

=>클래스의 멤버를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다.

선언 위치에 따른 분류 선언 위치 객체 생성 조건
멤버 클래스 인스턴스
멤버 클래스
class A{
    class B{ ... }
}
A 객체를 생성해야만
B 객체를 생성할 수 있음
정적 
멤버 클래스
class A{
    static class B{ ... }
}
A 객체를 생성하지 않아도
B 객체를 생성할 수 있음
로컬 클래스 class A{
    void method(){
            class B{ ... }
    }
}
method가 실행할 때만
B객체를 생성할 수 있음

중첩 클래스도 하나의 클래스이기 때문에 컴파일하면 바이트코드 파일(.class)이 별도로 생성된다.

파일의 이름은 다음과 같이 결정된다.

A $ B .class (A: 바깥 클래스. B: 멤버 클래스)

A $1 B .class (A: 바깥 클래스. B: 로컬 클래스)

 

인스턴스 멤버 클래스

[public] class A{
	[public | private] class B{
    	...
    }
}

 

인스턴스 멤버 클래스 사용

A a = new A();
A.B b = a.new B();

A.B b = new A().new B();

 

정적 멤버 클래스

[public] class A{
	[public | private] static class B{
    	...
    }
}

 

정적 멤버 클래스 사용

A.B b = new A.B();

 

로컬 클래스

생성자 또는 메소드 내부에서 다음과 같이 선언된 클래스

[public] class A{
	//생성자
	public A(){
    	class B {}
    }
    
    //메소드
    public void method(){
    	class B {}
    }
}

* 로컬 변수를 로컬 클래스에서 사용할 경우 로컬 변수는 final 특성을 갖게 되므로 값을 읽을 수만 있고 수정할 수 없게 된다.

 

바깥 멤버 접근

바깥 클래스의 멤버 접근 제한

구분 바깥 클래스의 사용 가능한 멤버
인스턴스 멤버 클래스 바깥 클래스의 모든 필드와 메소드
정적 멤버 클래스 바깥 클래스의 정적 필드와 정적 메소드

 

바깥 클래스의 객체 접근

바깥클래스이름.this => 바깥객체

 

중첩 인터페이스

중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스를 말한다.

클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 객체를 만들기 위해서이다.

class A{
	[public | private] [static] interface B{
    	//상수 필드
        //추상 메소드
        //디폴트 메소드
        //정적 메소드
    }
}

 

익명 객체

익명(Anonymous)객체는 이름이 없는 객체를 말한다.

익명 객체는 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다.

 

익명 자식 객체

부모클래스를 상속받아 생성.

new 부모생성자(매개값, ...){
	//필드
    //메소드
}

 

익명 구현 객체

인터페이스를 구현해서 생성. 보통 안드로이드와 같은 UI 프로그램에서 이벤트를 처리하는 객체로 많이 사용된다.

new 인터페이스(){
	//필드
    //메소드
}
728x90
반응형
LIST

'IT > JAVA' 카테고리의 다른 글

[JAVA] #11 예외 처리  (0) 2023.04.19
[JAVA] #10 라이브러리 모듈  (0) 2023.04.18
[JAVA] #8 인터페이스  (0) 2023.04.14
[JAVA] #7 상속  (0) 2023.04.11
[JAVA] #6 클래스(Class)-2  (0) 2023.04.10

+ Recent posts