11. Kotlin In Action 을 읽으며 남기는 기록들

현재까지의 감상

코틀린 기초

class Persion {
	val name: String, // 읽기 전용 프로퍼티, 코틀린은 필드, 게터만 만들어줌
	var isStudent: Boolean // 쓸 수 있는 프로퍼티, 필드, 게터,세터 만들어줌
}
enum class Color(
	val r:Int,
	val g: Int,
	val b: Int
){
	RED(255, 0, 0),
	ORGANGE(255,165);
	
	fun rgb() = (r*256+g) * 256 + b
}
if(e is Num){
	return e.value;
}

함수 정의와 호출

fun String.lastChar(): Char = this.get(this.length - 1)
```
- 확장 함수의 내부에서는 일반적인 인스턴스 메서드의 내부와 마찬가지로, 수신 객체의 메서드나 프로퍼티 사용 가능.
- 다만, 확장함수는 캡슐화를 깨지 않는다.즉, private/protected 멤버에는 접근 불가능.
- 확장함수를 쓰러며 임포트해야한다.
- 확장 함수는 단지 정적 메서드 호출에 신태틱 슈가다. 따라서, 클래스가 아닌 더 구체적인 타입을 수신객체 타입으로 지정 가능하기도 함.
- 확장함수는 오버라이드 불가능하다.
- 왜? 확장함수는 클래스의 일부가 아니므로.
- 만약 오버라이드해도..실제 호출될 함수는 확장 함수를 호출 할 때 수신객체로 지정한 변수의 컴파일 시점의 타입에 결정되지, 실행 시간에 그 변수에 저장된 객체 타입에 의해 결정되지 않는다.
- 즉, 코틀린은 확장함수를 정적으로 결정한다.