자바와의 원활한 상호 운용성을 제공하며, 정적 타입 지정 언어로서 널 안전성과 함수형 프로그래밍을 지원하여 코드의 간결성과 안전성을 높이는 대체 언어. 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 작아진다.
순수 Kotlin 프로젝트에서 권장되는 디렉터리 구조는 공통 루트 패키지가 생략된 패키지 구조를 따른다. Kotlin 파일이 단일 클래스나 인터페이스를 포함하고 있다면(관련 최상위 선언이 포함될 수 있음), 그 파일 이름은 클래스의 이름과 동일하게 하고 ...
val은 변경 불가능한 참조를 저장하는 변수다. 초기화 이후 변수의 값을 변경할 수 없다. 컴파일러가 문맥을 살펴봤을 때 오직 한번만 초기화 되는 것이 맞다면 조건에 따라 val 값을 여러 값으로 초기화할 수 있다. 변경이 불가능하지만 val이 가리키는 객체의 ...
코틀린에서는 자바 static 키워드를 지원하지 않는다. 패키지 수준의 최상위 함수를 이용하여 자바의 정적 메소드 역할을 거의 대신할 수 있다. 객체 선언을 이용하여 자바의 정적 메소드 역할 중 코틀린 최상위 함수가 대신할 수 없는 역할이나 정적 필드를 대신한다.
하나의 클래스 내부에 선언된 또 다른 클래스를 의미하며, 두 클래스가 서로 긴밀한 관계가 있거나 하나의 클래스 또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이다. 일반적으로 내부 인스턴스 클래스를 만들기 위해서는 먼저 외부 클래스를 초기화 후 ...
프로퍼티의 값을 다른 객체에게 위임할 때 사용하는 키워드로, 위임 패턴을 구현하여 프로퍼티의 동작을 다른 객체에게 위임할 수 있습니다. 객체가 특정 기능을 자체적으로 처리하지 않고, 다른 객체에게 해당 기능의 처리를 위임하여 그 객체가 일을 처리하도록 하는 ...
코틀린 표준 라이브러리에서 제공하는 확장함수로, 객체의 컨텍스트 내에서 실행 가능한 코드 블록을 만들어 준다. 호출 시 임시 범위가 생성되며, 이 범위 안에서는 이름 없이 객체에 접근이 가능하다.수신 객체를 명시하지 않고, 람다의 본문 안에서 해당 객체의 ...
컴파일 시점에 NullPointerException 오류를 방지하기 위해 도움을 주는 코틀린 타입 시스템의 특성. 코틀린 타입 시스템은 타입 이름 뒤에 물음표(?)를 명시하여 널이 될 수 있는 타입을 정의할 수 있도록 지원한다. 모든 타입은 기본적으로 널이 ...
특정 클래스나 객체에서 호출 가능한 함수처럼 호출할 수 있게 도와주는 함수. 특정한 이름의 함수를 사용하여 연산자의 동작을 재정의할 수 있게 해주는 기능으로, 연산자 오버로딩을 통해 사용자는 기존 연산자의 동작을 클래스나 타입에 맞게 재정의할 수 있다.
추상 메서드가 단 하나만 존재하는 인터페이스를 의미하며, SAM(Single Abstract Method)라고도 한다. 이렇게 정의된 인터페이스는 람다 표현식이나 메소드 참조를 통해 인스턴스가 가능하므로, 코드를 더욱 간결하게 유지할 수 있다. 부모 클래스의...