프로퍼티는 멤버변수(filed) 와 접근자(getter/setter)를 통칭하여 부르는 것입니다.
코틀린에서 클래스에 val, var 로 정의되는 변수를 프로퍼티로 볼 수 있습니다.
자바는 멤버변수 (filed) 를 기본으로 하고 코틀린은 프로퍼티를 기본으로 합니다.
const
제어자는 compile-time 상수에 붙는 제어자입니다. 말그대로 런타임 시가 아닌 컴파일 시에 할당되므로 다른 파일에서도 접근할 수 있고, 문자열이나 primitive type 만 할당 가능합니다. 일반적으로 companion object 내에 상수로 선언되거나 annotation 에서 사용됩니다.
자바의 public static final
과 같다고 생각할 수 있습니다.
변수를 먼저 선언 한 후 초기화를 나중에 하는 경우 사용합니다. lateinit var 변수를 사용하기 전 초기화 되었는지 확인하기 위해 .isInitialized
를 사용합니다.
if (foo::bar.isInitialized) {
println(foo.bar)
}
상용구 코드, 최소한의 변경으로 여러곳에서 재사용되는 코드를 boilerplate Code
라고 부릅니다.
인스턴스 메소드(instance method)는 static 키워드가 없는 메소드, 클래스 메소드(class method)는 static 키워드가 있는 메소드입니다.
클래스 메소드는 클래스 인스턴스를 생성하지 않고 클래스 이름.메소드 이름
으로 호출할 수 있습니다. 따라서 클래스 메소드 내부에서 인스턴스 변수를 사용할 수 없습니다.
abstract 와 interface 는 상속받거나 구현된 클래스가 내부의 메소드를 반드시 구현해야한다는 공통점이 있습니다. 이 둘의 가장 큰 차이는 abstract는 다중 상속이 불가하고, interface는 다중 상속이 가능하다는 점입니다. 그 이유는 둘의 사용목적이 다르기 때문입니다. abstract 는 객체들의 공통 개념을 표현하고자 할 때, interface 는 공통된 기능을 구현하고자 할 때 사용합니다.