728x90
1. 내부 클래스
내부 클래스는 외부 클래스 안에 선언된 클래스이다. 외부 내부 클래스 간의 멤버 접근이 용이하고 클래스를 감춤으로서 캡슐화를 실현시킬 수 있다는 장점이 있다. 내부 클래스에는 인스턴스, static, 지역 내부 클래스 그리고 예외로 익명 내부 클래스가 있다.
내부 클래스도 클래스 안에 선언될 수 있는 모든 변수의 특징과 같은 특징을 공유한다.
class Outer {
class InstanceInner {} // 인스턴스 내부 클래스
static class StaticInner {} // static 내부 클래스
void myMethod() {
class LocalInner {} // 지역 내부 클래스
}
}
1) 내부 클래스의 특징
내부 클래스의 특징을 알아보자.
(1) static 내부 클래스만 static 멤버를 사용, 정의할 수 있다. (단, final static은 상수이므로 예외)
(2) 지역 내부 클래스(해당 클래스 내 상수 포함)는 해당 메서드 내에서만 사용할 수 있다.
(3) 인스턴스 내부 클래스는 외부 클래스의 private 멤버도 접근 가능하다.
(4) 외부 클래스 메서드의 지역 변수는 상수인 경우만 지역 내부 클래스가 접근할 수 있다.
(5) 내부 클래스에서 외부 클래스의 iv와 내부 클래스의 iv의 이름이 같은 경우, 이를 구분할 때는 다음과 같이 한다.
(외부 클래스의 iv는 외부 클래스 이름.this.iv, 내부 클래스의 iv는 this.iv)
(4)는 상수가 아닌 외부 클래스 메서드의 지역 변수를 해당 메서드가 종료되고 참조하게 되면 문제가 발생하기 때문이다.
2) 익명 내부 클래스
익명 클래스는 이름이 없는 클래스이다. 선언과 생성을 동시에 하기에 상속(extends), 구현(implements) 중 하나만 할 수 있다.
원래 클래스 선언과 생성의 과정은 다음과 같다.
class MyClass extends Object { // ... }
MyClass mc = new MyClass(매개 변수 목록);
익명 클래스는 노란색 강조된 부분만을 사용해 선언과 생성을 동시에 한다.
new Object() { // ... }
[예 1]
자바 윈도우 프로그래밍 (AWT)
반응형
'자바 (Java) > 요약' 카테고리의 다른 글
Chpt 8. 예외 - 주제 2. 예외의 처리 (1) | 2023.11.01 |
---|---|
Chpt 8. 예외 - 주제 1. 프로그램 오류의 종류 (0) | 2023.11.01 |
Chpt 7. 객체 지향 프로그래밍 2 - 주제 5. 추상클래스와 인터페이스 (0) | 2023.10.27 |
Chpt 7. 객체 지향 프로그래밍 2 - 주제 4. 다형성의 장점 2가지 (1) | 2023.10.26 |
Chpt 7. 객체 지향 프로그래밍 2 - 주제 3. 제어자 (0) | 2023.10.26 |