Computer Science/Kotlin
-
[Kotlin] 인터페이스, 변경자Computer Science/Kotlin 2021. 1. 20. 15:51
코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의할 수 있음(자바의 디폴트 메소드랑 비슷) 하지만 인터페이스에는 아무런 상태(필드)도 들어갈 수 없다 Clickable 인터페이스를 정의해서, Button 클래스에서 click 메서드를 오버라이드 했음 이 인터페이스를 구현하는 모든 비추상 클래스는 click에 대한 구현을 제공해야 함 자바에서는 extends와 implements 키워드를 사용하지만, 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리함 인터페이스는 개수 제한 없이 마음대로 구현할 수 있지만, 클래스는 오직 하나만 확장할 수 있음 자바에서는 @override를 꼭 붙이지..
-
[Kotlin] 컬렉션 처리, 로컬 함수Computer Science/Kotlin 2021. 1. 20. 00:13
컬렉션 처리 vararg 키워드를 사용하면 호출 시 인자 개수가 달라질 수 있는 함수를 정의할 수 있음 중위 함수 호출 구문을 사용하면 인자가 하나뿐인 메소드를 간편하게 호출할 수 있음 구조 분해 선언을 사용하면 복합적인 값을 분해해서 여러 변수에 나눠 담을 수 있음 가변 인자 함수 정의 라이브러리에서 listOf 메서드를 보면 다음과 같음 fun listOf(vararg values: T) : list { … } 가변 길이 인자는 메소드를 호출할 때 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능 자바에서는 타입 뒤에 …를 붙이지만 코틀린에는 파라미터 앞에 vararg 변경자를 붙인다 이미 배열에 들어있는 원소를 가변 길이 인자로 넘길 때 자바에서는 배열을 그냥 넘기..
-
[Kotlin] 함수 정의와 호출Computer Science/Kotlin 2021. 1. 19. 13:19
코틀린에서 컬렉션 만들기 ) 코틀린에서는 자체 컬렉션을 제공하지 않고 표준 자바 컬렉션을 활용 자바에서 코틀린 함수를 호출하거나 코틀린에서 자바 함수를 호출할 때 자바와 코틀린 컬렉션을 서로 변환할 필요가 없음 ) 코틀린 컬렉션은 자바 컬렉션과 똑같은 컬렉션이지만 자바보다 더 많은 기능을 쓸 수있음 수로 이뤄진 배열에서 최대값을 찾거나 리스트의 마지막 원소를 가져올 수도 있음 함수를 호출하기 쉽게 만들기 ) list를 출력하면 toString()이 출력된다 하지만 이런 출력을 커스터마이징하려면 어떻게 할까 fun를 이용해서 제네릭으로 구현 이 함수를 호출하는 문장을 덜 번잡하게 만들 수 있지 않을까 함수를 호출할 때마다 매번 네 인자를 전달하지 않을 수는 없을까? 이름 붙인 인자 가독성을 위해서 인자에 ..
-
[Kotlin] 코틀린 기초 - 반복문Computer Science/Kotlin 2021. 1. 17. 22:51
while 자바랑 똑같음 for 코틀린에서는 자바의 for 루프(어떤 변수를 초기화하고 그 변수를 루프를 한 번 실행할 때마다 갱신하고 루프 조건이 거짓이 될 때 반복을 마치는 형태의 루프)에 해당하는 요소가 없다 이런 루프의 가장 흔한 예인 초깃값, 증가 값, 최종 값을 사용한 루프를 대신하기 위해 코틀린에서는 range를 사용한다 코틀린의 범위는 폐구간 또는 양끝을 포함하는 구간임, 무조건 끝값은 범위에 포함됨 1부터 10까지 순서대로 출력 100에서 10씩 내려가며 1까지 반복 0에서 20 - 1 까지 순서대로 반복 맵에 대한 이터레이션 맵을 만들고, 몇 글자에 대한 2진 표현으로 맵을 채운 다음, 그 맵의 내용을 출력하는 코드 ‘A’..’F’ 라는 범위로 for문을 돌릴 수 있음 TreeMap의 ..
-
[Kotlin] 코틀린 기초 - 제어문Computer Science/Kotlin 2021. 1. 17. 18:47
제어문 enum 클래스 자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아님 enum 클래스 안에도 프로퍼티나 메소드를 정의할 수 있다 enum 클래스 안에 메소드를 정의하는 경우 반드시 enum 상수 목록과 메소드 정의 사이에 세미 콜론을 넣어야 함 결과 when으로 enum 클래스 다루기 if와 마찬가지로 when도 값을 만들어내는 식 식이 본문인 함수에 when을 바로 사용할 수 있다( return이 없고 =로 바로 사용) 자바의 switch문과 동일한 기능이며, 각 분기의 끝에 break을 넣지 않아도 가능 한 분기 안에서 여러 값을 매치 패턴으로 사용하려면 콤마(,)로 분리해서 사용한다 Color.? 처럼 하지 않고 짧게 하기 위해 colors.Color와 colors.Color.*를 ..
-
[Kotlin] 코틀린 기초 - 클래스, 프로퍼티Computer Science/Kotlin 2021. 1. 17. 18:47
클래스 기존 자바의 클래스(Person) 코틀린에서의 클래스 파라미터를 대입하는 코드들을 줄여 더 간결하게 작성할 수 있음 이렇게 코드가 없이 데이터만 저장하는 클래스를 값 객체라 부름 코틀린의 기본 접근 제한자는 public이므로 생략이 가능함 프로퍼티 프로퍼티란 필드와 접근자를 한데 묶은 것임 자바에서는 필드값과 getter, setter를 따로 정의해줘야 함 코틀린에서는 이런 프로퍼티를 언어 기본 기능으로 제공하며, 자바의 필드와 접근자 메소드를 완전히 대체 가능 클래스 사용법 자바에서 Person 클래스 사용하는 방법 getter와 setter 정의 Person 객체를 만드려면 new 키워드 사용 필드를 불러오려면 getter를 사용해야 함 코틀린에서 Person 클래스 사용하는 법 자동으로 ge..
-
[Kotlin] 코틀린 기초 - 함수, 변수Computer Science/Kotlin 2021. 1. 17. 00:55
함수와 변수 함수를 선언할 때 fun 키워드를 사용함 파라미터 이름 뒤에 그 파라미터의 타입을 작성 함수를 최상위 수준에 정의할 수 있음, 꼭 클래스 안에 함수를 넣을 필요가 없음 배열도 일반적인 클래스와 똑같음. 자바처럼 배열처리를 위한 문법이 따로 존재하지 않음 System.out.println 대신에 println이라고 쓴다 세미콜론(;)을 붙이지 않아도 된다 함수 함수의 반환 타입은 파라미터 목록의 닫는 괄호 다음에 위치, :로 구분해야 한다 코틀린에서 if는 결과를 만드는 식이다. 식이 본문인 함수 함수 본문이 if식 하나로만 이루어져 있는 경우, 중괄호를 없애고, return을 제거하고 =를 식 앞에 붙이면 간결하게 함수를 표현할 수 있음. 식이 본문인 함수에서는 사용자가 반환 타입을 적지 않..
-
[Kotlin] 코틀린이란 무엇이고 왜 필요할까Computer Science/Kotlin 2021. 1. 17. 00:55
코틀린의 목적은 무엇인가 현재 자바가 사용되고 있는 모든 용도에 더 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것 자바 대신에 코틀린을 도입하면 더 적은 코드로 더 편하게 프로그래머의 목표를 달성할 수 있음 코틀린은 서버 사이드, 안드로이드 앱, 데스크탑 앱, ios 등 여러 분야에서 폭넓게 활용할 수 있음 자바와 거의 대부분 호환 가능함 정적 타입 지정 언어 자바와 마찬가지로 코틀린도 정적 타입 지정 언어(Statically typed) 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다 코틀린에서는 자바와 달리 타입 추론 기능이 있기 때문에 타입 선언을 생략해도 됨 정적 타입 지정 언어의 ..