2020-09-08 TIL ing
less than 1 minute read
중첩 클래스
탑 레벨 클래스와 접근제어
static nested class
- 하나의 소스 파일에 탑 레벨 클래스가 2개 이상일 때 하나만 퍼블릭 클래스가 될 수 있고 퍼블릭 클래스의 이름으로 소스 파일을 저장해야 한다.
스태틱 중첩 클래스
이너 클래스
- 인스턴스 메서드의 경우
- this 변수를 가지고 있다.
- 그 클래스의 인스턴스 변수 주소를 담는다.
- 인스턴스 메서드에 있는 this 변수는 인스턴스 메서드를 호출할 때 객체 주소를 저장한다.
- 이너 클래스의 경우
- 바깥 클래스의 인스턴스 주소를 저장하기 위해 다음과 같이 코드를 작성해야 한다.
- 바깥 클래스의 인스턴스 주소는 바깥 클래스의 인스턴스를 가지고 이너 클래스의 인스턴스를 생성할 때 저장한다.
- 즉 이너 클래스의 생성자를 호출할 때 바깥 클래스의 인스턴스 주소를 파라미터로 전달한다.
- 이를 위해 컴파일러는 이너 클래스를 컴파일 할 때 생성자를 변형한다.
로컬 클래스
- 메서드 안에 정의하는 클래스를 로컬 클래스라 한다.
- 특정 메서드 안에서만 사용되는 경우 로컬 클래스로 정의한다.
- 로컬 클래스는 메서드가 로딩되면 그 메서드 안에서 계속 사용할 수 있다.