[Kotlin] 부모 인스턴스 타입의 자식 인스턴스 프로퍼티 접근 질문좀 드립니다.
조회수 362회
코틀린에서 상속을 공부하다 부모 인스턴스에서 자식 인스턴스 프로퍼티 접근에서 헷갈리는 부분이 있어 질문드립니다
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 타입으로 생성되었는데..
이해가 잘가질 않아요..
댓글 입력