-
자료형변환, 업캐스팅, 다운캐스팅, Is 키워드Android 2024. 3. 15. 20:24
1. 자료형변환
fun main() { var str1 = "10" var str2 = "10.21" // 문자열을 숫자로 변경할 때의 메소드 var num1 = Integer.parseInt(str1) // 문자열을 정수로 변환하는 메소드1 var num2 = str1.toInt() // 문자열을 정수로 변환하는 메소드2 var num3 = str2.toDouble() // 문자열을 실수로 변환하는 메소드 }
객체 자료형간의 변환은 상속관계에서 가능하다.
2. 업캐스팅
자식클래스를 부모클래스의 자료형으로 객체를 생성하는 방법이다.
fun main() { print("마리수를 입력하세요 : ") var count = readLine()!!.toInt() var birdList = mutableListOf<Bird>() // 업캐스팅 for(i in 1..count) { print("새 이름을 입력하세요 : ") var birdName = readLine()!! birdList.add(Sparrow(birdName)) // 업캐스팅 , Sparrow(birdName)은 Sparrow 클래스의 객체이다. // birdList.add(Sparrow(birdName) as Bird) 도 가능하다 (as Bird 는 생략가능한 표현이다.) // var sparrow = Sparrow("참새") // birdList.add(sparrow) → 아직 이렇게 쓰는게 익숙해서 위쪽 표현이 조금 어색하다. } println("조류 생성 완료!") for(bird in birdList) bird.fly() } open class Bird(name:String) { // open → 부모 클래스 (name:String) → 매개변수를 받으므로 생성자를 선언해야함(근데, 매개변수를 클래스 선언부에서 받으니까 주생성자 init 필요!) var name : String init { // 주생성자 this.name=name } fun fly() { println("${name}가 날아요~") } } // 참새 자식 클래스 class Sparrow(name:String) : Bird(name) { }
3. 다운캐스팅
부모클래스를 자식클래스의 자료형으로 객체를 생성하는 방식이다. birdList.get(0) 은 자료형이 Bird 인 객체이다. 하지만, 부모 클래스의 객체를 자식 클래스의 객체로 다운캐스팅 하면 오류가 난다. 즉, 많은 양의 데이터를 그걸 담아내지 못하는 좁은 공간에 넣을 순 없다. (Sparrow는 Bird가 가져야할 정보를 전부 담아내지 못한다.)
var object1 : Sparrow = birdList.get(0) // 다운캐스팅 오류
보통 다운캐스팅보다 업캐스팅의 개념을 더 많이 활용한다!
4. Is 키워드
is 키워드를 활용해 자료형의 타입을 확인할 수 있다.
var name : String = "안드로이드" if(name is String) { println("${name} 은 문자열입니다!") } else { .. }
'Android' 카테고리의 다른 글
Scope Functions (let, with, also, apply, fun) (0) 2024.03.16 Pair,Triple 클래스 (0) 2024.03.15 여러 복합 계산 : 후위연산자, Stack 개념 활용 (0) 2024.03.14 Git 기본 개념 정리 (0) 2024.03.13 Git 에서 branch 활용하기 (0) 2024.03.12