Kotlin

    [Kotlin] enum class란 무엇인가?

    목표 enum class가 무엇인지 이해한다. enum class가 사용되어야 하는 곳을 이해한다. enum class를 왜 사용해야 하는가? 변수의 상태 별로 다른 결과값을 출력하는 코드를 짜야한다면 어떻게 짜야할까? 직관적으로 떠오르는 방법은 변수의 상태를 상수로 정의한다음 상태 별로 동작을 정의하는 것이다. 예를 들어 Task라는 작업 단위가 있고 해당 작업 단위의 상태값이 state를 출력해주는 클래스를 설계한다고 해보자. 그러면 해당 클래스는 아래와 같이 만들어질 수 있다. class Task { var state: Int = WAITING fun printState() = when (state) { WAITING -> println("Waiting..") PROCESSING -> println..

    [Kotlin Duration Class] 시간의 구간을 표현하는 클래스

    목표 Duration Class는 시간의 구간을 표현한다는 것을 이해한다. 개요 Duration Class는 두 시간 객체 사이의 지속시간(duration)을 만드는 클래스이다. 지속시간이므로, 날짜만으로는 구성이 불가능하다. 즉, Time요소가 들어간 데이터로만 Duration Class의 생성이 가능하다. 즉, 위의 초록색 상자에 들어간 클래스를 이용해서만 Duration Class를 만들 수 있다. Duration 생성 Duration은 Duration Class 내의 다양한 정적 메서드를 이용해 만들 수 있다. between 메서드 between 메서드는 두 시간 객체 사이의 차이를 이용해 duration을 만든다. val localTime1 = LocalTime.of(19, 30, 0); val..

    Kotlin 최상위 선언에서 가시성 변경자 : public, internal, private

    목적 최상위 선언의 가시성 변경자에 대해 이해한다. internal 가시성 변경자에 대해 이해한다. 최상위 선언에서의 가시성 변경자 최상위 선언에서는 3가지의 가시성 변경자를 쓸 수 있다. public : 기본 가시성 변경자이다. 모든 곳에서 접근 가능하다. internal : 같은 모듈 안에서만 접근 가능하다. Kotlin의 특별한 접근자로, 이 접근자를 통해 모듈화가 수월해진다. private : 같은 파일(.kt)안에서만 접근 가능하다. 최상위 선언에는 여러 class와 메서드(fun), 변수(val, var)이 들어갈 수 있는데, private으로 선언되었다면 같은 파일 안에서는 언제나 접근 가능하다. 아래에서 internal과 private 접근 제한자에 대해 살펴보자 Internal 접근 제한..

    Kotlin의 가시성 변경자(접근 제한자) : public, internal, protected, private

    목적 최상위 선언의 가시성 변경자에 대해 이해한다. 클래스 멤버의 가시성 변경자에 대해 이해한다. 가시성 변경자 가시성 변경자는 클래스에 대한 외부 접근 권한을 제어한다. Kotlin에서는 4가지 가시성 변경자를 제공한다. public internal protected private Kotlin에서는 최상위 선언에서의 가시성 변경자와 클래스 멤버 선언에서의 가시성 변경자의 접근성이 달라진다. 먼저 공통적으로 적용되는 가시성 변경자인 public에 대해 알아보자. public public은 기본 가시성 변경자로, 어디에서나 접근 가능한 가시성 변경자이다. Kotlin에서는 아무것도 쓰지 않을 때 public이 기본 가시성 변경자로 설정된다. 이는 가시성 변경자를 쓰지 않을 때 default라는 별도의 가시..

    Kotlin, Java의 최상위 선언 차이점

    목표 Java와 Kotlin의 최상위 선언의 차이에 대해 이해한다. 최상위 선언 최상위 선언이란 파일 최상위에 선언되는 클래스, 메서드, 변수를 뜻한다. Java의 최상위 선언 Java에서는 모든 코드가 클래스 기반으로 작성된다. 이 때문에 자바의 모든 파일은 클래스에 연결되어 있는데, 이로 인해 아래와 같이 최상위 선언에는 클래스만이 들어올 수 있는 구조가 만들어진다. package apackage; public class GalaxyTab { .. } 따라서 자바에서의 최상위 선언에는 class만이 들어갈 수 있으며, 파일명과 같은 클래스만이 정의가 가능하다. 메서드를 정의하기 위해서는 class 내부에 정의를 해야 한다. 이러한 구조에서는 메서드를 정의하기 위해 클래스를 만들고 내부에 메서드를 만들..