1. 변수타입
- val : 상수
- var : 가변변수
- const val : static final 정적 상수
private const val EMPTY_NAME_ERROR_MESSAGE = "이름을 입력하지 않았습니다"
private const val MAX_NAME_LEGNTH = "이름을 5글자 이하로 입력해주세요"
2. 생성자
- constructor : 생성자
- init : 객체를 생성할 때 원하는 작업 추가
3. 클래스 : data, object, companion object
- data class : java의 POJO클래스와 비슷. toString, hashCode, equals 오버라이딩
data class Person(val name: String, val age: Int, val nickname: String = name)
2. object : singleton 객체를 지원 → static 메서드
object InputView {
private const val CAR_DELIMITER = ","
private const val NUMBER_REGEX = "^[0-9]+$"
val carNames: List<Name>
get() {
try {
return splitCarNames(readLine().toString())
} catch (e: IllegalArgumentException) {
OutputView.printException(e.message)
return carNames
}
}
3. companion object : static과 비슷하게 사용되어 보이지만 실제론 객체이다.
- 이름 선언 X
class MyClass{
companion object {
val prop = "나는 Companion object의 속성이다."
fun method() = "나는 Companion object의 메소드다."
}
}
fun main(args: Array<String>) {
println(MyClass3.companion.prop)
println(MyClass3.companion.method())
}
- 이름 선언 O
class MyClass{
companion object MyCompanion {
val prop = "나는 Companion object의 속성이다."
fun method() = "나는 Companion object의 메소드다."
}
}
fun main(args: Array<String>) {
println(MyClass.MyCompanion.prop)
println(MyClass.MyCompanion.method())
}
4. 변수 출력 : + 가 아닌, $ 기호
private const val WINNER_MESSAGE = "가 최종 우승했습니다."
private fun printCarPositionInfo(car: Car) {
println("${car.name} : ${"-".repeat(car.position)}")
}
5. 예외 발생 : check(), require()
require(second != 0) { "0으로 나눌 수 없습니다." }
6. try-catch문을 바로 리턴할 수 있다.
fun getCarInput(): Cars {
val userInput = getCarNamesByUser()
return try {
Cars(generateCars(userInput))
} catch (e: IllegalArgumentException) {
printErrorMessage(e.message)
getCarInput()
}
}
'공부 > Kotlin' 카테고리의 다른 글
2장. 코틀린 기초 (0) | 2022.05.29 |
---|---|
1장. 코틀린이란 무엇이며, 왜 필요한가? (0) | 2022.05.28 |
[Kotlin] 문법 정리 - 2 (0) | 2022.05.04 |
[Kotlin] 자동차 경주 (2) | 2022.04.29 |
[YOUTHCON'21] Kotlin 맛 (0) | 2022.04.29 |
댓글