Kotlin Docs

    [Kotlin Docs] Enum classes

    [Kotlin Docs] Enum classes

    본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다. 오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다! 2022-05-17 기준으로 작성되었습니다. enum 클래스의 가장 기본적인 사용사례는 타입에 안전한 열거형의 구현입니다. 각각의 enum 상수는 객체입니다. enum 상수는 쉼표로 구분됩니다. 각각의 enum은 enum 클래스의 인스턴스이기 때문에, 다음과 같이 초기화될 수 있습니다: Anonymous classes enum 상수는 기본 메소드 오버라이딩과 같이 대응하는 메소드를 가지고 그들의 익명 클래스를 선언할 수 있습니다. enum 클래스가 멤버를 정의하는 경우, 세미콜론으로 멤버 정의와 상수 정의를 구분합니다. Imp..

    [Kotlin Docs] Nested and inner classes

    [Kotlin Docs] Nested and inner classes

    본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다. 오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다! 2022-05-13 기준으로 작성되었습니다. 클래스는 다른 클래스 안에 중첩될 수 있습니다. 중첩된 인터페이스를 사용할 수도 있습니다. 클래스와 인터페이스의 모든 조합이 가능합니다: 클래스 안에 인터페이스, 인터페이스 안에 클래스, 인터페이스 안에 인터페이스 중첩이 가능합니다. Inner classes inner로 표시된 중첩 클래스는 외부 클래스의 멤버에 접근할 수 있습니다. 내부 클래스는 외부 클래스의 객체에 대한 참조를 유지합니다. 내부 클래스 안의 this의 명확화에 대해 알고 싶다면 Qualified this expr..

    [Kotlin Docs] Generics: in, out, where

    [Kotlin Docs] Generics: in, out, where

    본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다. 오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다! 2022-05-04 기준으로 작성되었습니다. 코틀린의 클래스는 자바와 동일하게 타입 파라미터를 가질 수 있습니다: 이러한 클래스의 인스턴스를 생성하려면, 간단하게 타입 인자를 제공하면 됩니다. 그러나 생성자의 인자와 같이 파라미터를 추론할 수 있다면 타입 인자를 생략할 수 있습니다. Variance 자바 유형 시스템의 가장 까다로윤 유형 중 하나는 와일드카드 유형입니다. (Java Generics FAQ↗). 코틀린은 이들 대신에 선언부의 변화와 타입 예측이 있습니다. 자바가 이런 신비한 와일드카드를 필요로하는 이유에 대해 생..

    [Kotlin Docs] Sealed classes

    [Kotlin Docs] Sealed classes

    본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다. 오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다! 2022-04-08 기준으로 작성되었습니다. Sealed class와 인터페이스는 상속을 보다 잘 제어할 수 있는 제한된 클래스 계층을 나타냅니다. sealed class의 모든 직접적인 서브클래스는 컴파일 타임에 알려집니다. sealed class가 있는 모듈이 컴파일 된후 다른 서브클래스는 표시되지 않습니다. 예를 들어, 서드 파티 클라이언트는 그들의 코드에 sealed class를 확장할 수 없습니다. 그러므로 sealed class의 각 인스턴스는 이 클래스가 컴파일 될때 인식되는 한정적인 세트로부터 타입을 갖습니다. ..

    [Kotlin Docs] Data classes

    [Kotlin Docs] Data classes

    본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다. 오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다! 2022-04-07 기준으로 작성되었습니다. 데이터를 유지하기 위한 목적의 클래스를 생성하는 것은 드문 일이 아닙니다. 이러한 클래스에서 일부 표준 기능과 유틸리티 함수는 종종 데이터에서 기계적으로 파생됩니다. 코틀린에서, 이것들은 data classes라고 불리며 data로 표시됩니다. 컴파일러는 기본 생성자에 선언된 모든 프로퍼티로부터 다음 멤버들을 자동으로 파생합니다. equals() / hashCode() 쌍 "User(name=John, age=42)" 형태의 toString() 선언 순서의 프로퍼티에 대응하는 com..

    [Kotlin Docs] Extensions

    [Kotlin Docs] Extensions

    본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다. 오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다! 2022-04-07 기준으로 작성되었습니다. 코틀린은 클래스를 상속하거나 Decorator와 같은 디자인 패턴을 사용하지 않고 기능적으로 새롭게 클래스를 확장하는 기능을 제공합니다. 이것은 extensions라는 특별한 선언을 통해 이루어집니다. 예를 들어, 수정할 수 없는 써드파티 라이브러리의 클래스에 새로운 함수를 작성할 수 있습니다. 이러한 함수들은 본래 함수의 메소드였더라도 일반적인 방식을 통해 호출할 수 있습니다. 이러한 기능은 extension function이라고 불립니다. 존재하는 클래스에 새로운 프로퍼티를 정의..