💡 코틀린에서 중첩 클래스를 다루는 법
목차
- 중첩 클래스의 종류
- 중첩 클래스와 내부 클래스
- 정리
💡 중첩 클래스의 종류
클래스 안에 내부 클래스를 만들때는 static클래스를 사용하자.
자바 코드 예시
- Static을 사용하는 중첩클래스
- Static을 사용하지 않는 중첩 클래스
- 내부 클래스 (Inner Class)
- 지역 클래스 (Local Class)
- 익명 클래스 (Anonymous Class)
💡중첩 클래스와 내부 클래스
기본적으로 코틀린은 외부 클래스를 참조하지 않는다.
외부 클래스를 참조하고 싶다면 inner 키워드를 추가하고 this@외부클래스를 사용해야한다
자바 코드 예시
내부클래스는 숨겨진 외부 클래스 정보를 가지고 있어 참조를 해지하지 못하는 경우
메모리 누수가 발생할 수 있고, 이를 디버깅하기 어렵다
내부 클래스의 직렬화 형태가 명확하게 정의되어 있지 않아, 직렬화에 있어 제한이 있다.
public class JavaHouse {
private String address;
private LivingRoom livingRoom;
public JavaHouse(String address) {
this.address = address;
this.livingRoom = new LivingRoom(10);
}
public LivingRoom getLivingRoom() {
return livingRoom;
}
// 내부 클래스
public class LivingRoom {
private double area;
public LivingRoom(double area) {
this.area = area;
}
// 바깥 클래스를 바로 불러올 수 없다.
public String getAddress() {
return JavaHouse.this.address;
}
}
public static main(String[] args) {
JavaHouse house = new JavaJouse("제주도");
System.out.println(house.getLivingRoom().getAddress());
}
}
코틀린 코드 예시
외부 클래스 참조를 위해 this@외부클래스
class House(
var address: String,
var livingRoom: LivingRoom = LivingRoom(10.0)
) {
// 권장되는 클래스 안의 클래스
class LivingRoom(
private var area: Double
)
inner class LivingRoom(
private var area: Double
) {
val address: String
get() = this@House.address
}
}
💡 정리
- 클래스 안에 클래스가 있는 경우 종류는 2가지이다.
- (Java 기준) static을 사용하는 클래스
- (Java 기준) static을 사용하지 않는 클래스
- 권장되는 클래스는 static을 사용하는 클래스이다.
코틀린은 이러한 가이드를 따른다.
- 클래스 안에 기본 클래스를 사용하면 외부 클래스에 대한 참조가 없다.
- 외부 클래스를 참조하고 싶으면, inner 키워드를 붙여야 한다.
- inner class에서 외부 클래스를 참조하려면 this@외부클래스 를 사용해야 한다.
'📘 Backend > Kotlin' 카테고리의 다른 글
Kotlin - Array & Collections (0) | 2023.04.23 |
---|---|
Kotlin - Classes (0) | 2023.04.23 |
Kotlin - Object (0) | 2023.04.23 |
Kotlin - Extension Function (0) | 2023.04.23 |
Kotlin - Access Control (0) | 2023.04.22 |