똑같은 코드는 이제 그만
전편에 이어 이번에도 똑같은 코드를 다시 한 번 볼 것이다.
1 | fun bot(body: Bot.Builder.() -> Unit): Bot = Bot.Builder().build(body) |
전편에 이어 이번에도 똑같은 코드를 다시 한 번 볼 것이다.
1 | fun bot(body: Bot.Builder.() -> Unit): Bot = Bot.Builder().build(body) |
1편 : Kotlin :: 클래스, 객체, 인터페이스 1
2편 : Kotlin :: 클래스, 객체, 인터페이스 2
자바에서 클래스를 생성하면 반듯이 하는 3가지 함수가 있다.
클래스, 객체, 인터페이스 1에 이어 클래스, 객체, 인터페이스2 를 시작한다.
코틀린에서는 생성자를 주 생성자(primary constructor)
와 부 생성자(secondary constructor)
로 나눈다. 주 생성자는 단 한번만 선언할 수 있으며 부 생성자를 여럿 선언할 수도 있다.
코틀린 인터페이스는 자바8과 비슷하게 추상 메소드 뿐만 아니라 구현이 있는 메소드도 정의할 수 있다. 다만 인터페이스에는 아무런 상태(필드)도 들어갈 수 없다.
1 | interface Clickable { |
콜론(:)
을 붙여 클래스 확장과 인터페이스를 구현 모두를 처리한다.override
변경자는 @Override 애노테이션과 동일하게 오버라이드 표시를 하지만 오버라이드 시 반드시 사용
해야 한다.디폴트 함수
를 제공한다.
함수 정의와 호출 1에 이어 함수 정의와 호출 2를 시작한다.
확장 프로퍼티를 사용하면 기존 클래스 객체에 대한 프로퍼티 형식의 구문으로 사용할 수 있는 API를 추가할 수 있다. 확장 프로퍼티로 작성하면 아무 상태도 가질 수 없지만 (확장 함수와 같다) 코드를 더 짧게 작성할 수 있어서 편한 경우가 있다.
1 | val String.lastChar: Char |
코틀린에서는 코틀린만의 컬렉션을 만들지 않고 모두 자바의 컬렉션은 그대로 사용하고 추가적인 함수를 제공하고 있다. 컬렉션을 만들 때엔 대체적으로 컬렉션명 + Of
의 조합이다.
1 | val set = hashSetOf(1, 7, 53) |
코틀린의 기초 1에 이어 코틀린의 기초 2를 시작한다.
코틀린에서 enum은 소프트 키워드라 부르는 존재이다. enum은 class앞에 있을 때는 특별한 의미를 지니지만 다른 곳에서는 이름에 사용할 수 있다. 반면 class는 키워드이므로 이름으로 사용할 수 없다.
자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아니다. enum 클래스 안에도 프로퍼티나 메소드를 정의할 수 있다.
1 | enum class Color ( |
Update your browser to view this website correctly. Update my browser now