Android/안드로이드 스터디(Kotlin)61 Kotlin] 12. 번호 붙은 접은 연산자 fun main(args: Array): Unit { val person = Person("Kotlin", "2020-02.15") println(person[0]) println(person[1]) println(person[-1]) person[0] = "Java" println(person.name) } class Person(var name: String, var birthday: String) { operator fun get(position: Int): String { return when (position) { 0 -> name 1 -> birthday else -> "알 수 없음" } } operator fun set(position: Int, value : String) { when(po.. 2020. 12. 7. Kotlin] 11. 연산자 오버로딩 자바는 연산자 오버로딩을 제공하지 않는다. 그러나 코틀린은 연산자 오버로딩을 지원한다. 자주 쓰는 다섯개의 연산 기호만 대표적으로 본다. + plus - minus * times / div % rem 그럼 왜 이런걸 할까? 연산 대상이 숫자가 아닐 경우 쓴다. 예시를 본다. fun main(args: Array): Unit { val pt1 = Point(3, 7) val pt2 = Point(2, -6) val pt3 = pt1+pt2 val pt4 = pt3*6 val pt5 = pt4/3 pt3.print() pt4.print() pt5.print() } class Point(var x: Int = 0, var y: Int = 0) { operator fun plus(other:Point) : Po.. 2020. 12. 7. Kotlin] 10. getter, setter 자바와 다르게 코틀린은 getter, setter을 선언해줄 필요가 없다. 그러나, 선언하고 임의로 값을 변경할 수도 있다. fun main(args: Array): Unit { val person = Person() person.age = -30 println(person.age) } class Person{ var age : Int = 0 get() { return field } set(value) { field = if(value >= 0) value else 0 } } 기존이라면, class Person{ var age : Int = 0 get() { return field } set(value) { field = value } } 가 생략된 값이 있는 것이다. 여기서 field는 프로퍼티 값이 .. 2020. 12. 7. Kotlin] 9. 생성자 기존 자바의 경우는 클래스를 만들고, 내부에 같은 이름을 가진 클래스를 하나 더 만들어야 생성자의 임의선언이 가능했다. 그러나 코틀린은 간결함을 요구하는 언어이므로 그렇게 거추장스러운 방법을 쓰지 않는다.. 굳이 클래스 이름을 다 적을 필요 없이 init 명령어 하나면 모든게 끝난다 쩔지. 다음 코드는 클래스를 호출할 때 받아온 매개변수로 동시에 초기화 시키는 코드이다. init으로 생성자를 선언한 후에.. 그냥 그 매개변수를 등치시켜 초기화 하면 된다. 진짜 간편하지 않은가(!) fun main(args: Array): Unit { val person = Person("홍길동", 30) println("이름 : ${person.name}") println("나이 : ${person.age}") } cl.. 2020. 12. 7. 이전 1 ··· 10 11 12 13 14 15 16 다음 반응형