Language/Kotlin In Action 8

[Kotlin In Action] 코틀린이란? Android와 Web Application Server 개발에서 Java를 대체할 목적으로 IDE 전문 개발사인 JetBrains에서 만든 언어입니다. Java를 대체하기 위한 목적으로 개발된 언어로 언어적으로는 최신의 패러다임을 적용하여 Java의 약점을 보완하여 Java에서 사용하는 JVM에서는 호환될 수 있게 만들어졌습니다. 특징 자바와 마찬가지로 정적 타입 지정 언어입니다. 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻입니다. 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없습니다. 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 됩니다.. Language/Kotlin In Action 2021. 9. 29.
[Kotlin In Action] open, final, abstract 변경자 자바에서는 final로 명시적으로 상속을 금지하지 않는 모든 클래스를 다른 클래스가 상속할 수 있습니다. 기본적으로 상속이 가능하면 편리한 경우도 많지만 문제가 생기는 경우도 많습니다. 취약한 기반 클래스 문제는 하위 클래스가 기반 클래스에 대해 가졌던 가정이 기반 클래스를 변경함으로써 깨져버린 경우에 발생합니다. 어떤 클래스가 자신을 상속하는 방법에 대해 정확한 규칙(어떤 메소드를 어떻게 오버라이드해야 하는지 등)을 제공하지 않는다면 그 클래스의 클라이언트는 기반 클래스를 작성한 사람의 의도와 다른 방식으로 메소드를 오버라이드할 위험이 있습니다. 모든 하위 클래스를 분석하는 것은 불가능하므로 기반 클래스를 변경하는 경우 하위 클래스의 동작이 예기치 않게 바뀔 수도 있다는면에서 기반 클래스는 취약합니다... Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 인터페이스 코틀린의 인터페이스는 자바8 인터페이스와 비슷합니다. 코틀린 인터페이스 안에는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의할 수 있습니다. 자바 8의 디폴트 메소드와 비슷합니다. 다만 인터페이스에는 아무런 상태도 들어갈 수 없습니다. 자바에서는 extends와 implements 키워드를 사용하지만, 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리합니다. 자바와 마찬가지로 클래스는 인터페이스를 원하는 만큼 개수 제한 없이 마음대로 구현할 수 있지만,클래스는 오직 하나만 확장할 수 있습니다. class 클래스이름 : 클래스A, 인터페이스A, 인터페이스B { ... } 자바의 @Override 애노테이션과 비슷한 over.. Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 가변 인자 가변 길이 인자는 메소드를 호출할 때 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능입니다. 코틀린의 가변 길이 인자도 자바와 비슷합니다. 다만 문법이 조금 다릅다. 타입 뒤에 . . .를 붙이는 대신 코틀린에서는 파라미터 앞에 vararg 변경자를 붙입니다. //mutableListof() //val list = mutableListOf() public inline fun mutableListOf(): MutableList = ArrayList() //mutableListOf(1,2,3,4,5,6,7,8,9,10) //val list = mutableListOf(1,2,3,4,5,6,7,8,9,10) public fun mutableListOf(vararg eleme.. Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 확장함수 확장 함수는 어떤 클래스의 멤버 메소드인 것처 럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수입니다. 확장 함수를 만들려면 추가하려는 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧붙이기만 하면 됩니다. 이때 클래스의 이름을 수신 객체 타입이라고 부르며, 확장함수가 호출되는 대상이 되는 값을 수신 객체라고 합니다. 수신 객체 타입은 확장이 정의될 클래스의 타입이며. 수신 객체는 그 클래스에 속한 인스턴스 객체입니다. //CommonResponse : 수신 객체 타입 //this : 수신 객체 fun CommonResponse.isSuccess(): Boolean { return this.data == "success" } 심지어 자바나 코틀린 등의 언어 중 어떤 것으로 작성됐는가는 중요하지 않습.. Language/Kotlin In Action 2021. 4. 21.
[Kotlin In Action] 문자열 템플릿 문자열 템플릿은 자바의 문자열 접합 연산("Hello, ”+name+"!”)과 동일한 기능 을 하지만 좀 더 간결하며,자바 문자열 접합 연산을 사용한 식과 마찬가지로 효율적입니다. 컴파일러는 각 식을 정적으로 컴파일 시점에 검사하기 때문에 존재하지 않는 변수를 문자열 템플릿 안에서 사용하면 컴파일 오류가 발생합니다. 문자열 템플릿 안에 사용할 수 있는 대상은 간단한 변수 이름만으로 한정되지 않습니다. 복잡한 식도 { }로 둘러싸서 문자열 템플릿 안에 넣을 수 있습니다. 문자열 템플릿 안에 $로 변수를 지정할 때 변수명 바로 뒤에 한글을 붙여서 사용하면 코틀린 컴파일러는 영문자와 한글을 한꺼번에 식별자로 인식해서 unresolved reference 오류를 발생시킵니다. 이 문제를 해결하는 방법은 변수 이.. Language/Kotlin In Action 2021. 4. 13.
[Kotlin In Action] 변수 코틀린에서 변수를 선언할 때, 자바와 달리 자료형 대신 키워드로 변수 선언을 시작합니다. 또 상황에 따라 뒤에 오는 타입을 명시하거나 생략하게 허용합니다. 변수를 선언하는 키워드는 두가지가 있습니다. var variable라는 의미를 가집니다. mutable(가변) 참조를 저장하는 변수로 활용됩니다. 값이 바뀔 수 있습니다. 자바의 일반변수에 해당합니다. 한번 초기화하면 타입이 고정됩니다. Int 타입으로 처음 초기화 되면 Int형 변수가 됩니다. val value라는 의미를 가집니다. immutable(불변) 참조를 저장하는 변수로 활용됩니다. val로 선언된 변수는 일단 초기화하고 나면 재대입이 불가능합니다. 자바의 final에 해당됩니다. 초기화 조건(분기)에 따라 다른 여러 값으로 초기화 할 수 .. Language/Kotlin In Action 2021. 4. 13.
[Kotlin In Action] 함수 코틀린 함수의 특징 fun를 키워드를 사용하여 함수를 정의합니다. 파라미터 이름 뒤에 파라미터의 타입을 작성합니다. 함수를 최상위 수준에 정의 할 수 있습니다. 자바처럼 꼭 클래스 안에 함수를 넣을 필요가 없습니다. 배열도 일반적인 클래스와 마찬가지입니다. 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않습니다. println과 같은 래퍼 함수를 제공합니다. 줄 끝에 세미콜론을 붙이지 않아도 됩니다. 식이 본문인 함수, 블록이 본문인 함수 두가지가 될 수 있습니다. 식이 본문인 함수의 반환 타입만 생략이 가능합니다. 블록이 본문인 함수는 반환타입을 지정해야 합니다. 블록이 본문인 함수의 경우 Unit 타입의 경우 반환타입이 생략 가능합니다. 식이 본문인 함수의 경우 굳이 반환 타입을 지정해 주지 않.. Language/Kotlin In Action 2021. 4. 13.