on
[자바 프로그래밍 언어] 5장
[자바 프로그래밍 언어] 5장
728x90
5장 중첩 클래스와 인터페이스
5.1 정적 중첩 타입
중요하다고 생각하는 문장들
중첩 타입을 정의할 수 있다는 것은 다음의 두 가지 주요 용도를 지원할 수 있다는 것을 의미한다. 중첩 클래스와 중첩 인터페이스가 논리적으로 관련된 그룹에 구조화되고 같은 범위에 속하는 타입이 될 수 있게 해준다. 중첩 클래스가 논리적으로 연관된 객체를 간단하고도 효율적으로 연결할 수 있다.
중첩 타입은 이 타입을 선언한 타입의 일부분이 되며 이 둘은 서로의 멤버에 접근할 수 있는 관계.
정적일 경우에는 단순한 구조의 타입을 허용하는 반면, 아닐 경우에는 중첩 객체와 이를 감싸는 외부 객체와의 특별한 관계를 정의해야 한다.
외부 클래스나 인터페이스 내에 static 멤버로 선언된 중첩 클래스나 중첩 인터페이스는 최상위 클래스나 최상위 인터페이스처럼 동작한다.
중첩 타입의 이름은 "외부이름.중첩이름"으로 표현.
그래서 중첩 타입은 외부 타입에 접근할 수 있는 경우에만 접근 가능.
정적 중첩 타입은 외부 타입 내에 선언된 멤버이기 때문에 적당한 객체 참조만 있다면 private 멤버를 포함한 모든 멤버에 접근 가능.
정적 중첩 클래스는 형식이 단순하다. 이 클래스를 선언하기 위해서는 클래스 선언 앞에 static 제한자를 선언하기만 하면 된다.
인터페이스에서 중첩 클래스를 선언할 경우, 무조건 static이어야 하며 제한자는 선언 안 해도 됨.
정적 중첩 클래스는 최상위 클래스처럼 동작함. 다른 클래스를 확장할 수도 있으며 다른 인터페이스를 구현할 수도 있음. 그리고 다른 클래스가 이 클래스를 확장할 수도 있음.
public class BankAccount{ private long number; private long balance; public static class Permissions{ public boolean cnaDeposit, canWithdraw, canClose; } }
Permissions 클래스를 BankAccount 클래스 내부에 정의해서 BankAccount 클래스의 멤버로 만든다.
아예 외부에서 Permissions에 접근하기 위해서는 완전한 이름을 사용해야 한다.
BankAccount.Permissions perm = ~~
인터페이스 내부에 선언된 정적 중첩 클래스는 무조건 public이지만 정적 중첩 클래스를 클래스 내부에 선언하는 경우에는 접근 제한자를 원하는데로 선언 가능.
중첩 인터페이스는 항상 static이며, 협약에 따라 인터페이스 선언 시 생략 가능.
이해가 잘 안되는 문장들
없음
5.2 내부 클래스
중요하다고 생각하는 문장들
비정적 중첩 클래스를 내부 클래스라 부르기도 한다. 비정적 클래스 멤버들은 클래스의 인스턴스와 연관된다.
이해가 잘 안되는 문장들
없음
5.3 지역 내부 클래스
중요하다고 생각하는 문장들
이해가 잘 안되는 문장들
728x90
from http://soobinhand.tistory.com/145 by ccl(A) rewrite - 2021-12-25 17:01:59