목록전체 글 (29)
Jisoo’s devlog
클래스 계층 정의 코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메서드뿐 아니라 구현이 있는 메서드도 정의할 수 있다. interface Clickable { fun click() } 이 인터페이스는 구현되어 있지 않은 click() 추상 메서드를 정의한다. 이 인터페이스를 구현하는클래스는 click()에 대한 구현을 해야한다. class Button : Clickable { override fun click() = println("I was clicked") } >>> Button().click() I was clicked 코틀린에서는 [ 클래스 이름 : 인터페이스와 클래스 이름 ] 으로 클래스를 확장하고 인터페이스를 구현한다. 인터페이스 구현은 한 번에 여러 개 가능하지만 클래스 확장은 한 번에 하..
확장 함수란? 확장 함수: 어떤 클래스의 멤버 메서드인 것처럼 호출할 수 있지만 그 클래스의 밖에서 선언된 함수 선언 : 수신 객체 타입+추가하려는 함수 이름():타입 = ~ 수신 객체 타입: 확장되는 클래스 수신 객체: 확장 함수가 호출되는 대상이 되는 값 String: 확장되는 클래스 lastChar(): 불러오려는 함수 확장 프로퍼티란? 확장 프로퍼티도 일반 프로퍼티와 같지만 수신 객체 타입(확장되는 클래스)만 추가된다. 사용 방법도 일반 프로퍼티와 동일하게 사용된다. 필드(멤버 변수)가 없어서 게터를 꼭 정의해야 한다. 기존 클래스 객체에 프로퍼티 형식의 구문으로 API를 추가해서 추가적인 기능을 사용할 수 있게 한다. API를 추가한다는 것 : 실제로 컬렉션에 추가되는 것은 아니지만 기존의 컬렉..
코틀린에서 컬렉션 만들기 코틀린은 자체 컬렉션이 없고 표준 자바 컬렉션을 사용한다. 표준 자바 컬렉션을 사용하는 것이 자바 코드와 상호작용하기가 더 수월하기 때문이다. 코틀린 컬렉션이 자바 컬렉션과 완전히 동일하지만 코틀린에서는 더 많이 활용할 수 있다. 예를 들어, 리스트의 마지막 요소를 찾거나(last) 숫자들 사이에서 최댓값(max)을 찾을 수 있다. (자바에서는 못하나봄?) >>> val strings = listOf("first", "second", "fourteenth") >>> println(strings.last()) fourteenth >>> val numbers = setOf(1, 14, 2) >>> println(numbers.max()) 14 함수를 쉽게 호출 내용을 출력 : 아주 ..
코틀린의 확장(Extension) 지원에 대해 알아보았다. Extension이란 -상속이나 디자인 패턴 없이 클래스를 간단하게 확장할 수 있는 방법이다. 자바는 확장 기능 대신, AOP 같은 관점 지향 프레임워크를 사용한다. 하지만 코틀린은 open키워드를 달아주지 않으면 상속을 받지 못해서 확장 기능을 지원한다. 코틀린의 확장 함수 클래스로 대변되는 타입에 함수를 상속관계 없이 추가하는 것이다. 함수를 마치 이 타입의 멤버 함수인 것처럼 호출 가능하다. 단, 호출이 가능한 함수들은 패키지의 멤버 함수이다. 확장 함수는 새로운 클래스를 만들지 않아도 되어서 간편하게 사용 가능하다. 확장 함수를 선언하는 방법: 클래스 이름 .(온점) 함수 이름 확장 함수는 클래스 안에 들어가지 않는다. 실제로 메소드를 클..
Kotlin in Action 1장, 2장을 공부한 뒤, 새롭게 알게 된 부분과 그 전과 달리 궁금증이 해결된 부분에 대해 FAQ를 작성하겠다. 사실 모르는 게 너무 많았지만 추가적인 부분은 차차 정리해나가겠다. 1. 코틀린의 배열 선언 방식/ 자바와의 차이점 코틀린은 배열을 선언하기 위한 문법이 따로 존재하지 않는다. 그래서 코틀린을 사용하여 배열을 선언할 때는 Array클래스로 표현된다. Array 에 대한 코틀린 공식 문서 ▼ https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/ Array - Kotlin Programming Language kotlinlang.org arrayOf(), arrayOfNulls() 등과 같은 방법으로 배열을 선언..
What is Extension 상속이나 디자인 패턴 없이 클래스를 간단하게 확장할 수 있는 방법 (자바에는 확장 기능이 없어서 AOP 같은 관점 지향 프레임워크를 동원해서 사용함.) + 자바와 달리 코틀린은 클래스가 기본적으로 기본 상속 변경자가 final 이라서 open 키워드를 달아주지 않으면 상속 불가능하다. 그래서 확장(Extension)을 지원한다. 정적 바인딩된다는 특징 정적 바인딩이란: 컴파일 시간에 구성요소의 성격이 결정되는 것. 코틀린의 확장 함수(Extension function) 클래스로 대변되는 타입에 함수를 상속관계 없이 추가하는 것. 함수를 마치 이 타입의 메소드(멤버 함수)인 것처럼 호출 가능. 호출 가능한 함수들은 패키지의 멤버 함수이다. 새로운 클래스를 만들지 않아도 되어..
기본 구성 요소: 함수와 변수 fun main(args: Array) { println("Hello, world!") } 위 짧은 예시에서: 1. fun 키워드는 함수 선언을 할 때 사용된다. 2. 매개 변수 타입은 이름 뒤에 선언된다. 3. 함수는 파일의 최상위 수준에 선언된다. 4. 배열은 일반적인 클래스이다. 자바와 다르게 코틀린은 배열 타입을 선언하기 위한 문법이 존재하지 않는다. 5. System.out.println 대신 println이라고 쓴다. 6. 줄 끝에 세미콜론(;)을 붙이지 않아도 된다. 함수 fun max(a: Int, b: Int): Int { return if (a > b) a else b } >>> println(max(1, 2)) 2 이 코드는 더욱 간단해질 수 있다. fu..
What is Kotlin : 자바 플랫폼을 겨냥해 새롭게 등장한 프로그래밍 언어. 현재 자바가 사용되는 거의 모든 곳에 사용할 수 있다. 코틀린의 특징을 볼 수 있는 예시. data class Person(val name: String, val age: Int?= null) fun main(args:Array) { val persons = listOf(Person("Alice"), Person("Bob",age = 29)) val oldest = persons.maxBy{it.age ?: 0} println("The oldest is : $oldest") } //the oldest is : Person(name=Bob,age=29) Alice 의 나이는 지정되지 않았지만 Person 클래스를 선언할 때..