Android/안드로이드 스터디(Kotlin)61 Kotlin] 20. is 자바에는 instanceOf 함수가 있듯, 코틀린에는 is가 있다. 이것은 객체의 타입의 일치여부를 Boolean 타입으로 반환한다. 앞서 예시에서 Student는 Person을 상속했었다. 이제 예시를 보자. package isExample import `object`.Person import `object`.Student class Professor(name : String, age : Int) : Person(name, age) fun main(args : Array) { val person : Person = Student("Rose", 21, 20201209) println("${person is Person}") println("${person is Student}") println("${pe.. 2020. 12. 9. Kotlin] 19. Nullable? import `object`.Person fun main(args: Array): Unit { println("start") var person : Person ? = Person("K", 30) var num : Int? = null num = 10 } (아니 나 진짜 코틀린 너무 어려워 ㅠ 자바랑 똑같이 생긴줄 알았는데 아님) 자바는 기본적으로 nullable이다. 그런데 코틀린은 non - nullable이다(이런거 보면 자바보다 규칙이 빡빡한거 같은데) 함수가 다른 곳에서 값을 받아올 때, 우리는 이 함수 내부의 값이 null인지 null이 아닌지 알 수 없다. 코틀린에서 nullable이 아닌 변수에 값을 넣으면 컴파일 에러가 난다. 그러나 선언하는 타입 뒤에 ? 를 붙여주면 그 객체는 null.. 2020. 12. 9. Kotlin] 18. Nothing Nothing은 실행 흐름이 도달할 수 없는 구역을 나타내기 위한 특수타입이다. 예시를 보자. import java.lang.Exception fun main(args: Array): Unit { println("start") val i : Int = throwing() println(i) } fun throwing() : Nothing = throw Exception() Nothing은 어느 타입에도 대입할 수 있는 장점이 있다. 이 함수가 호출되면 바로 예외가 호출된다. 결과 : 2020. 12. 9. Kotlin] 17. 오버라이딩 자바에는 매서드 오버라이딩이라는 기술을 지원한다. 서브클래스에서 같은 매서드 명을 가지고 있을 때, @override라는 어노테이션을 붙여주면 슈퍼클래서의 매서드를 무시하고 서브클래스의 매서드를 실행하는 기술이다. 코틀린에서도 오버라이딩을 할 수 있다. fun main(args: Array): Unit { AAA().func() BBB().func() } open class AAA { open fun func() = println("AAA") } class BBB : AAA() { override fun func(){ super.func() println("BBB") } } 함수도 선언할때 무조건 final이 붙기 때문에, 오버라이딩을 기본적으로 허용하지 않는다. 허용하기 위해서는 반드시 open 키워드.. 2020. 12. 9. 이전 1 ··· 8 9 10 11 12 13 14 ··· 16 다음 반응형