728x90
- Data class : 데이터를 담기 위한 클래스
- toString(), hashCode(), equals(), copy() 메서드를 자동으로 생성
- override 하면, 직접 구현한 코드를 사용
- 1개 이상의 프로퍼티가 있어야함
- 데이터 클래스는 abstract, open, sealed, inner를 붙일 수 없음
- 상속이 불가능
- toString(), hashCode(), equals(), copy() 메서드를 자동으로 생성
- Sealed class : 추상 클래스로, 상속받은 자식 클래스의 종류를 제한
- 컴파일러가 sealed 클래스의 자식 클래스가 어떤 것인지 앎
- when과 함께 쓰일 때, 장점을 느낄 수 있음
package com.example.kotlin
fun main() {
val person = Person("랑지",2)
val dog = Dog("단감",3)
println(person.toString())
println(dog.toString())
println(dog.copy(age = 5).toString())
val cat: Cat = BlueCat()
val result = when(cat) {
is BlueCat -> "blue"
is RedCat -> "red"
is GreenCat -> "green"
// else -> "none" sealed가 되면서 컴파일러가 Cat이 어떤 자식 가지게 되는지 알게 돼서 else 필요없어진다.
is WhiteCat -> "white" //에러 체크 손쉽게 가능 (recyclerview view type 등에서 쓰임, else 문 안 쓰고 명시적인 장점)
}
println(result)
}
class Person (
val name : String,
val age : Int,
)
//class Cat()//아무 property 없어도 된다.
data class Dog(
val name: String,
val age: Int,
)
//data class Corgi(
// val preety : Boolean = true
//
//) : Dog() 데이터 클래스 상속 불가능
//{
// override fun toString(): String {
// return "직접 구현 $name"
// }
//}
//sealed class
sealed class Cat
class BlueCat : Cat()
class RedCat : Cat()
class GreenCat : Cat()
class WhiteCat : Cat()728x90
'코틀린(Kotlin)' 카테고리의 다른 글
| (코틀린/Kotlin) Object, Companion object (0) | 2024.02.08 |
|---|---|
| (코틀린/Kotlin) 초기화 지연 (0) | 2024.02.08 |
| (코틀린/Kotiln) Scope function (0) | 2024.02.08 |
| (코틀린/Kotlin) 확장함수 (0) | 2024.02.08 |
| (코틀린/Kotlin) Lambda(람다) (0) | 2024.02.08 |