-
내부 클래스
- 클래스 내에 선언된 클래스
ㄴ 왜? 두 클래스가 서로 긴밀한 관계
- 클래스 내에 선언된다는 점 제외, 일반 클래스와 다르지 않음
장점
- 두 클래스 멤버간 서로 쉽게 접근 가능 (private 접근 가능)
- 외부에 불필요한 클래스 감춤 (코드 복잡성 감소)
주의
- 내부 클래스 B가 외부 클래스인 A를 제외하고 다른 클래스들에서 잘 사용되지 않는 것이어야 함
ex.
A 클래스와 관련된 상호작용만 하는 C 클래스
종류
- 인스턴스 클래스
ㄴ 클래스 안에 클래스 (거의 얘만 씀)
- 스태틱 클래스
ㄴ 클래스 안에 static 클래스 (거의 안씀)
- 지역 클래스
ㄴ 클래스 안에 있는 메서드 안에 정의된 클래스 (거의 안씀)
- 익명 클래스
ex.
class Outer {
class InstanceInner {} // 인스턴스 클래스
static class StaticInner {} // 스태틱 클래스
void myMethod() {
class LocalInner {} // 지역 클래스
}
}
인스턴스 내부클래스
- 외부 클래스로 외부 객체가 생성된 후 내부 클래스 설계도 사용가능
- 인스턴스 내부 클래스는 외부 클래스의 모든 멤버에 접근 가능
- 외부 클래스의 클래스 메서드는 인스턴스 내부클래스 사용 불가
스태틱 내부클래스
- 외부 클래스가 메모리에 로딩만 되도 내부 클래스 설계도 사용 가능
- 스태틱 내부클래스는 외부 클래스의 클래스 멤버에만 접근 가능
- 스태틱 메서드에서 사용 가능한 외부 클래스는 스태틱 내부클래스 뿐
익명 클래스
- 일회용 클래스
- 다른 클래스들과 달리 이름이 없음
- 클래스 선언, 객체 생성 동시에 함
- 한번만 사용
- 오직 하나의 객체 생성
특징
- 생성자 없음
- 상속과 구현 동시 불가 (한 클래스 상속 or 한 인터페이스 구현 중 택)
- 반드시 조상이 있어야 함 (인터페이스, 추상클래스, 일반 클래스)
- 조상을 기반으로 클래스가 정의되고, 딱 한번 객체 생성 가능
class A {
A() {} // 이름있는 클래스는 생성자가 있음
}
A a1 = new A();
A a2 = new A():
// 이름 있는 클래스는 객체 여러 개 생성 가능
ex.
// 익명클래스 작성에 사용되는 조상 인터페이스
interface Parent {
void biz();
}
// 익명 클래스로 객체 만들기
Parent child = new Parent() {
public void biz() {
수행문;
수행문;
}
};
이 부분이 클래스
{
public void biz() {
수행문;
수행문;
}
};'java > ㄴ CHAPTER 7. 객체지향 프로그래밍 2' 카테고리의 다른 글
CHAPTER 7. (8) 인터페이스란? ★ (0) 2020.04.02 CHAPTER 7. (7) 추상 클래스란? (추상 메서드 포함) (0) 2020.04.02 CHAPTER 7. (6) 다형성이란? (참조변수 형변환, 매개변수 다형성, instanceof연산자 포함) ★★ (0) 2020.04.02 CHAPTER 7. (5) abstract란? (get, set 포함) (0) 2020.04.02 CHAPTER 7. (4) 제어자란? (static, final 포함) (0) 2020.04.02