Lewis's Tech Keep
[Kotlin] 코틀린 적응기 - 중첩 클래스, data class & enum class & sealed class 본문
Kotlin/Kotlin 적응기
[Kotlin] 코틀린 적응기 - 중첩 클래스, data class & enum class & sealed class
Lewis Seo 2024. 10. 1. 21:40시작
많이 사용되는 것은 아니지만 정말 한 클래스에 종속되었다는 걸 가끔 표현하기 위해서 쓰는 경우가 있는 중첩클래스,
그리고 DTO로 자주 사용되는 data class나 enum class 등 요긴하게 사용할 듯 하다.
배우고 있는 것
https://www.inflearn.com/course/java-to-kotlin
1. 중첩 클래스
바깥 클래스를 참조하는 Inner class 와 참조하지 않는 class 를 각각 아래와 같은 방법으로 생성할 수 있다.
class House (
val address: String,
val livingRoom: LivingRoom
) {
// 기본 내부 클래스 : 권장
class LivingRoom(
private var area: Double
)
// 바깥 클래스 참조 : 권장하지 않음
// inner class
inner class LivingRoom(
private var area: Double
) {
val address: String
get() = this@House.address
}
}
2. 여타 클래스
2-1. data class
dto 클래스에 자주 이용된다.
equals & hashcode & toString이 내부적으로 구현되어있어서 신경쓰지 않아도 된다.
record 클래스와 닮아있다.
// Data Class
// DTO 에 주로 사용
// equals and hashcode까지 해줌, toString도
data class PersonDto(
val name: String,
val age: Int,
)
2-2. enum class
enum class 키워드로 생성한다.
enum class Country (
private val code: String,
) {
KOREA("KO"),
AMERICA("US"),
}
fun handleCountry(country: Country) {
when(country) {
Country.KOREA -> ""
Country.AMERICA -> ""
}
}
2-3. sealed class
상속 받을 클래스를 같은 패키지에서 다 설정할 수 있다.
// 컴파일 타임에 다 체크함
// 하위 클래스가 같은 패키지에 있어야함
// when 과 함께하면 다 체크 해 줌
// 추상화가 필요한 Entity나 dto에 자주 쓰임
sealed class Car (
val name: String,
val price: Long,
)
class ACar : Car("nameA", 100)
class BCar : Car("nameB", 100)
class CCar : Car("nameC", 100)
'Kotlin > Kotlin 적응기' 카테고리의 다른 글
[Kotlin] 코틀린 적응기 - 람다, 컬렉션 함수형 (0) | 2024.10.01 |
---|---|
[kotlin] 코틀린 적응기 - 배열 & 컬렉션, 함수 (0) | 2024.10.01 |
[Kotlin] 코틀린 적응기 - 접근 제어, object (0) | 2024.10.01 |
[Kotlin] 코틀린 적응기 - 클래스, 상속 (1) | 2024.10.01 |
[Kotlin] 코틀린 적응기 - 제어문, 반복문, 예외, 함수 (0) | 2024.09.30 |
Comments