코틀린도 클래스가 존재한다.
class Name으로 만든다.
만약 파라미터가 필요하면
class Name(val valName: Type, ~){
}
으로 만든다. 이걸 클래스 헤더 라고 한다.
함수의 매개변수처럼 클래스 헤더에도 기본값을 설정할 수 있다.
값이 없으면 기본값이, 있으면 새로운 값이 설정된다.
class Name(val valName: Type = defaultValue, ~){
}
. 을 통해접근 가능하다.클래스 내부에도 함수를 선언 가능하다. 똑같이 .을 이용해 접근한다.
코틀린에는 데이터 저장에 유용한 데이터 클래스가 있다.
일반 클래스 + 기본 매서드가 추가가 된다.
선언은 data class ~ 로 하면 된다
.toString().equals() , ==.copy()가 기본적으로 저공된다.
이중 .copy의 경우 뒤에 생성자에 유무에 따라 동일 혹은 일부, 전체가 다른 클래스를 복사 가능하다.
코틀린은 기본적으로 Null로부터 안전하게 설계가 되어 컴파일시에 Null문제를 체크할 수 있다.
먼저 기본적으로 Null이 허용되지 않으나. 만약 허용하고 싶다면 타입 뒤에 ?를 붙인다
var notNull: String
var nullalbe: String?
만약 Null을 허용했어도. 특정 작업을 할 때 Null 오류가 발생 가능하다면 컴파일러가 알려준다.
만약 null이 허용된 값을 호출할려면 ?.을 이용하여 안전하게 호출 가능합니다.
fun lengthString(maybeString: String?): Int? = maybeString?.length
Elvis 연산자는(?:) 만약 null이 감지가 된다면 기본값을 리턴해 주는 연산자 입니다.
fun main() {
var nullString: String? = null
println(nullString?.length ?: 0)
// 0
}
위의 경우 null이 아니라 0이 출력됩니다.