코딩항해기

[JAVA] 내부클래스, 익명클래스 본문

JAVA

[JAVA] 내부클래스, 익명클래스

miniBcake 2024. 7. 23. 17:14

 

 

내부 클래스

두 클래스 간에 서로 쉽게 접근하여 사용할 수 있도록 만든 것이다.

중첩 클래스라고도 하며, 바깥쪽 클래스를 외부 클래스, 안쪽 클래스를 내부 클래스라고 한다.

 

내부 클래스의 종류

인스턴스 클래스 외부 클래스의 멤버 변수와 같은 위치에 선언한다
주로 외부 클래스의 멤버 변수와 관련된 작업에 사용될 목적으로 선언한다.
외부클래스 멤버 변수위치
정적 클래스 외부 클래스의 클래스 변수와 같이 static 키워드가 부여된다. 외부 클래스 클래스 변수 위치
지역 클래스 외부 클래스의 메서드 내부에서 선언하여 사용된다.
메서드 영역에서 선언되기 때문에 메서드 내부에서만 사용할 수 있다.
외부 클래스 메서드 안

 

 

내부 클래스의 선언

public class 외부클래스 {

	private String 외부클래스멤버;
    
    public class 인스턴스클래스 {
    	//외부클래스 멤버 위치에서 선언된다.
		//외부클래스$내부클래스.class
    }
    
    public static class 정적내부클래스 {
    	//외부클래스 멤버 위치에서 선언된다.
    }

	public void 외부클래스메서드(){
    	
        class 지역클래스 {
        	//외부클래스의 메서드 내부에서 선언된다.
        }
        
    }
}

 

 

내부 클래스의 객체화

//1. 인스턴스 클래스
외부클래스 outer = new 외부클래스();
외부클래스.내부클래스 in = outer.new 내부클래스();

//2. 정적 내부 클래스
외부클래스.내부클래스 in = new 외부클래스.내부클래스();
//외부 클래스 없이 바로 선언된다.

//3. 지역 클래스
지역클래스 local = new 지역클래스();
//단, 선언된 메소드 내에서만 가능하다.

 

 

 

익명 클래스

이름이 있는 내부 클래스과 달리 이름이 없는 클래스를 의미한다.

익명 클래스는 선언과 생성을 동시에 하며 일회성이다.

보통 인터페이스를 상속하지 않고 일회성으로 기능을 구현하여 사용할 때 주로 사용된다.

 

익명클래스 선언

Person p = new Person(){
	@Override
    void method(){
    	//재정의;
    }
}; //익명클래스 영역 종료 중괄호에는 세미콜론이 붙는다.

'JAVA' 카테고리의 다른 글

[JAVA] 2차원 배열  (0) 2024.07.25
[JAVA] 예외처리 try-catch (+예외던지기 throw, throws)  (0) 2024.07.24
[JAVA] 상속 (+super, super())  (0) 2024.07.21
[JAVA] 생성자 (+this, this())  (0) 2024.07.20
[JAVA] 배열 (+index, Arrays)  (1) 2024.07.17