1. 내부 클래스(inner class)
내부 클래스란 어떤 클래스 내부에 선언된 또 하나의 클래스를 의미합니다.
이런 내부 클래스는 외부 클래스(outer class)에 대해 두 클래스가 서로 긴밀한 관계를 맺고 있을 때 선언이 가능합니다.
또한 클래스안에 클래스를 만드는 건 가능하지만 해당 페이지에서만 사용하게 만들어야 합니다.
따라서 public 클래스는 하나만 있어야 합니다.
class Outer { // 외부 클래스
...
class Inner { // 내부 클래스
...
}
...
}
2. 내부 클래스의 장점
1. 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있게 됩니다.
2. 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킵니다.
3. 외부에서는 내부 클래스에 접근할 수 없으므로, 코드의 복잡성을 줄일 수 있습니다.
3. 내부 클래스의 종류
외부 클래스 영역에 선언된 클래스 중 static 키워드를 가지는 클래스를 정적 클래스(static class)라고 합니다.
정적 클래스는 주로 외부 클래스(outer class)의 클래스 메소드에 사용될 목적으로 선언됩니다.
외부 클래스 영역에 선언된 클래스 중에서 static 키워드를 가지고 있지 않을 경우 인스턴스 클래스(instance class)라고 합니다.
인스턴스 클래스는 주로 외부 클래스(outer class)의 인스턴스 변수나 인스턴스 메소드에 사용될 목적으로 선언됩니다.
지역 클래스(local class)란 외부 클래스의 메소드나 초기화 블록에 선언된 클래스를 의미합니다.
이러한 지역 클래스는 선언된 블록 내에서만 사용할 수 있습니다.
클래스의 종류를 정리하면 다음과 같습니다.
1. 정적 클래스(static class)
2. 인스턴스 클래스(instance class)
3. 지역 클래스(local class)
4. 익명 클래스(anonymous class)
4. 익명 클래스(anonymous class)
익명 클래스(anonymous class)는 다른 내부 클래스와 다르게 이름을 가지지 않는 클래스입니다.
익명 클래스는 선언과 동시에 객체를 생성합니다. 즉, 단 하나의 객체만을 생성하는 일회용 클래스라고 할 수 있습니다.
그러므로 생성자를 선언할 수 없으며 하나의 클래스나 하나의 인터페이스를 상속받거나 구현할 수 있습니다.
익명 클래스는 매우 제한적인 용도에 사용되며 구현해야 하는 메소드가 매우 적은 클래스를 구현할 때 사용됩니다.
// 익명 클래스는 선언과 동시에 생성하여 참조변수에 대입
클래스이름 참조변수이름 = new 클래스이름(){
// 메소드 선언
};
익명 클래스의 형태는 다음과 같습니다.
'Java 관련 > Java' 카테고리의 다른 글
[Java] 제네릭(Generic) (0) | 2021.11.10 |
---|---|
[Java] 싱글톤 패턴(Singleton pattern) (0) | 2021.11.09 |
[Java] 인터페이스(interface)를 이용한 도형의 넓이 구하기 & 캡슐화 (0) | 2021.11.07 |
[Java] 추상클래스(abstract class) (0) | 2021.11.06 |
[Java] 상속과 다형성 (0) | 2021.11.05 |