본문 바로가기

Android/안드로이드 스터디(Kotlin)61

Kotlin] 16. 상속 자바는 기본 클래스 선언이 default 이다. 그러나 코틀린은 기본적으로 final이다. 그렇기 때문에 기본적으로 상속이 허용되지 않는다. 그러나 상속을 할 수 있는 방법이 있다. 상속받을 모체 클래스에 open 키워드를 붙이면 된다. fun main(args: Array): Unit { val person = Person("홍길동", 32) val student = Student("김미영", 26, 20201209) } open class Person(var name: String, var age: Int) class Student(name: String, age: Int, var id: Int) : Person(name, age) Student 옆에 : Person으로 마치 함수나 변수 타입을 선언.. 2020. 12. 9.
Kotlin] 15. 멤버함수의 중위 표기법(infix) fun main(args: Array): Unit { val pt = Point(3,6) from Point(1,1) println(pt.x) println(pt.y) } class Point(var x :Int, var y : Int){ infix fun from(base : Point) : Point { return Point(x-base.x, y-base.y) } } (근데 이걸 잘 쓰나?) 코틀린은 함수를 연산자처럼 연결할 수도 있다. 함수 + 함수처럼.. class 함수를 보면 fun 키워드 옆에 infix라는 키워드가 있다. 함수의 매개변수가 하나뿐이라면 이걸 붙이면 되는데, 원래 클래스 내의 함수를 호출하려면 Point(3,6).from(Point(1,1))로 호출할 것을 간단히 호출할 수 .. 2020. 12. 8.
Kotlin] 14. in 자바는 객체 속에 무언가가 포함되어 있는것을 찾을때, 특히 문자열 속의 문자, 혹은 문자열을 찾을 때 어떻게 하는가? 예를 들어, Kotlin 속에 o가 포함되어 있는지 없는지 찾으려고 한다. 그렇다면 자바는 "Kotlin".contain("o"); 라는 함수를 이용한다. 그러나, 코틀린은 훨씬 직관적인 함수로 이것을 비교한다. 예시를 보면 바로 납득할 수 있다. fun main(args: Array): Unit { println('o' in "Kotlin") println('z' in "Kotlin") println('o' !in "Kotlin") } in이다. 정말 직관적이지 않을 수 없다. 안에 있나 없나, 얼마나 직관적이야. 결과 : true false false 심지어 비교연산자처럼 !도 먹는다. 2020. 12. 7.
Kotlin] 13. invoke? 자바랑 다르게 코틀린은 정말 신기한 함수가 있는데, invoke라는 함수이다. 앞서 계속 말했지만 코틀린은 간단한 코드를 지향하는 함수이다. 예시를 본다. fun main(args: Array): Unit { val person = Person("Kotlin") person() } class Person(var name: String) { operator fun invoke() { println("name : $name") } } 결과 : name : Kotlin 뭔가 이상한 점이 보이지 않나? person이라는 객체를 선언해놓고, 굳이 객체 내의 함수 이름인 invoke를 호출하지 않아도 invoke 내부의 함수가 호출이 된다. 즉, invoke를 이용해 자주 호출해야 하는 함수를, 객체의 이름+()만.. 2020. 12. 7.
반응형