[25강] https://youtu.be/SKosPXHLT5Q
0. 모든 객체에 기본 지원되는 함수
모든 객체는 Any를 참조하므로 Any가 가지고 있는 메소드는 모든 객체가 사용할 수 있다.
equals : 같은 (메모리) 객체인지 판별하는 함수
toString : 객체명@해쉬코드(16진수)
※ 아무것도 호출되지 않았을 때도 toString이 호출(기본값)
hashCode : 해쉬값을 정수형으로 반환
fun main() {
val a = MyClass("수박", 1)
val b = MyClass("수박", 1)
println(a.equals(b))
println(a.hashCode()) // 10진수
println(a.toString()) // 16진수
println(a)
println("%x".format(a.hashCode())) // 10 -> 16
}
class MyClass(val name: String, val id: Int)
false
835648992
MyClass@31cefde0
MyClass@31cefde0
31cefde0
1. Data class
package com.iseohyun.examplecode.syntax.basic.oop
fun main() {
val a = Data("수박", 1)
println(a.copy())
println(a.copy(name = "참외"))
println(a.copy(id = 3))
}
data class Data(val name: String, val id: Int)
Data(name=수박, id=1)
Data(name=참외, id=1)
Data(name=수박, id=3)
Component예제
fun main() {
val list = listOf( Data("수박", 1),
Data("딸기",5),
Data("참외",3))
for((a,b) in list) {
println(a + ", " + b)
}
}
data class Data(val name: String, val id: Int)
수박, 1
딸기, 5
참외, 3
2. Enum Class
Enum은 열거형 객체로 전통적으로 대문자를 사용해왔습니다.
fun main() {
println(State.SING.message)
println(State.EAT.message)
println(State.SLEEP.message)
println(State.SING.isSleeping())
val s: State = State.EAT
println(s)
println(s.message)
}
enum class State(val message: String) {
SING("노래를 부릅니다."),
EAT("밥을 먹습니다."),
SLEEP("잠을 잡니다.");
fun isSleeping() = this == State.SLEEP
}
노래를 부릅니다.
밥을 먹습니다.
잠을 잡니다.
false
EAT
밥을 먹습니다.
'코틀린' 카테고리의 다른 글
[Youtube DiMo] 27-28강. 컬렉션 함수 (0) | 2022.05.03 |
---|---|
[Youtube DiMo] 26강. Set / Map (0) | 2022.05.03 |
[Youtube DiMo] 24강. 내부클래스 (0) | 2022.04.30 |
[Youtube DiMo] 23강. 함수 (0) | 2022.04.30 |
[Youtube DiMo] 22강. Null (0) | 2022.04.29 |
댓글