Kotlin

    [Kotlin/Basic] 코틀린에서의 다양한 함수

    [Kotlin/Basic] 코틀린에서의 다양한 함수

    1. 확장함수 자바로 만들어진 라이브러리를 유지보수, 확장할 때 코틀린을 붙이고 싶을 때, 함수의 코드 자체는 밖에 있는데, 안에 있는 것처럼 쓰고 싶을 때 사용한다. 예시) fun String.lastChar() : Char { return this[this.length-1] } fun main(){ val str = "ABC" println(str.lastChar()) } String.lastChar() 함수가 확장함수이다. String클래스를 확장하기 때문에 String.을 붙여주고, this를 통해 인스턴스에 접근이 가능하다. this를 수신객체, String클래스를 수신객체타입이라고 부른다. 이렇게 한다면 main에서 멤버함수인 것처럼 사용할 수 있다. 위의 예시처럼 원래 String에 있는 멤..

    [Kotlin/Basic] 코틀린에서의 배열과 컬렉션

    [Kotlin/Basic] 코틀린에서의 배열과 컬렉션

    1. 배열 보통 배열보다는 리스트를 사용하곤한다. 그래도 간단하게 자바와 비교하며 문법을 체크해보자. val array = arrayOf(100, 200) //0부터 마지막 index까지 for문을 돌림 for(i in array.indices){ println("$i ${array[i]}") } //쉽게 추가할 수 있음 array.plus(200) //인덱스와 밸류를 한 번에 도출함 for((idx, value) in array.withIndex()){ println("${idx}, ${value}!") } 배열도 마찬가지로 가변인지 불변인지 판별하는 val, var을 적어주어야하고, arrayOf( )라고 적는다. 이를 for문을 통해 배열안에 있는 값들을 출력할 때에는 array.indices를 통..

    [Kotlin/Basic] 코틀린에서의 중첩클래스

    [Kotlin/Basic] 코틀린에서의 중첩클래스

    1. 중첩 클래스의 종류 자바에서 static을 사용하는 중첩클래스와 사용하지 않은 클래스 두 가지로 나눌 수 있었다. static을 사용하는 중첩클래스라면 바깥 클래스를 바로 불러올 수 없었지만, static을 사용하지 않는 중첩클래스라면 바깥 클래스를 바로 불러올 수 있었다. 하지만 이를 권장하지 않고 있다. 왜냐하면, 내부 클래스는 숨겨진 외부 클래스 정보를 가지고 있어, 참조를 해지하지 못하는 경우 메모리 누수가 생길 수 있고, 이를 디버깅하기 어렵기 때문이다. 이렇기 때문에 따라서 자바에서 클래스 안에 클래스를 사용할 때에는 static을 사용하곤 했었다. 이제 그럼 코틀린에서의 중첩클래스와 내부 클래스를 어떻게 구현할 수 있는지 알아보자. 2. 코틀린의 중첩 클래스와 내부 클래스 class ..

    [Kotlin/Basic] 코틀린에서의 object 키워드

    [Kotlin/Basic] 코틀린에서의 object 키워드

    1. static 함수와 변수 class Person private constructor( var name : String, var age : Int, ){ //static이 존재하지 않는다. //이는 Factory처럼 이름을 지어줄 수도 있고, 인터페이스를 구현해 줄 수도 있음 companion object Factory { //클래스와 동행하는 유일한 오브젝트라는 의미 //자바에서와의 static 변수와 함수처럼 활용된다. /* 정적으로 인스턴스끼리의 값을 공유 클래스가 인스턴스화 될 때 새로운 값이 복제되는 것이 아니라, */ private const val MIN_AGE = 1 //const 를 붙이면 컴파일 시에 변수가 할당된다. //런타임때 할당되는 것이 아니라, //진짜 상수에 붙이기 위한 ..

    [Kotlin/Basic] 코틀린에서의 접근제어

    [Kotlin/Basic] 코틀린에서의 접근제어

    1. 자바와 코틀린의 가시성 제어 위의 그림과 같이 public과 private은 똑같지만, protected와 default에서 차이점이 존재한다!! 같은 패키지에서 사용 가능했던 protected가 코틀린에서는 선언된 클래스, 하위클래스에서만 접근이 가능하다!! 또한, default가 사라지고 internal이 등장했고 이는 같은 모듈에서만 접근이 가능하다! 2. 코틀린 파일의 접근 제어 public은 기본값으로 어디에서든 접근이 가능하다!! var a = 3 fun add(a : Int, b : Int) : Int { return a + b } 코틀린 파일안에 기본값이 public으로 어디에서든 접근이 가능하다!! 하지만 protected는 파일 최상단에서는 사용이 불가능하다! 왜냐하면 파일의 최상..