[Kotlin] 부모 인스턴스 타입의 자식 인스턴스 프로퍼티 접근 질문좀 드립니다.

조회수 364회

코틀린에서 상속을 공부하다 부모 인스턴스에서 자식 인스턴스 프로퍼티 접근에서 헷갈리는 부분이 있어 질문드립니다

open class Animal(val size:Int)

class Spider(val poison:Int): Animal(50)


fun main() {
        val a1:Animal = Spider(5)
        println("posion : ${a1.poison}")
}

여기서 a1은 poison에 접근이 불가능합니다. a1은 Animal 타입이기 때문이죠

상속 관계에서 부모 타입에 자식 타입을 생성?하면 부모 인스턴스는 부모 타입의 프로퍼티에만

접근 가능하다고 배웠습니다

그런데

open class Animal(val size:Int)

class Spider(val poison:Int): Animal(50)


fun main() {
        val s1 = Spider(5)
        val a1:Animal
        a1 = s1
        println("posion : ${a1.poison}")
}

이것은 왜 접근이 가능한가요?

a1은 Animal 타입으로 생성되었는데..

이해가 잘가질 않아요..

  • a1 = s1 으로 덮어쓰고 있지 않나요? 엽토군 2021.5.1 10:27

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)