ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료형변환, 업캐스팅, 다운캐스팅, 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
Designed by Tistory.