728x90
반응형
① 업캐스팅(Upcasting)
서브 클래스 인스턴스를 "슈퍼 클래스의 타입"으로 참조한다
업 캐스팅은 항상 성공한다
as 연산자를 사용해서 할 수도 있다 (컴파일 시점에 캐스팅 가능 여부를 결정한다)
as : "컴파일 시점"에 타입 캐스팅(업캐스팅)을 하며, 실패할 경우 에러가 발생한다. 패턴 매칭(switch)에도 사용한다
서브 클래스의 인스턴스를 슈퍼 클래스의 타입으로 참조하는 것을 업캐스팅이라고 함
=> 사용할 수 있는 기능은 업캐스팅된 부분에 한정이됨, teacher은 person이라는 것을 상속받는다고 할때
업캐스팅을 하면 person의 기능에 한정지어 사용하게됨.
② 다운캐스팅(Downcasting)
슈퍼 클래스 인스턴스를 "서브 클래스의 타입"으로 참조한다
업캐스팅된 인스턴스를 다시 원래 서브 클래스 타입으로 참조할 때 사용한다
다운 캐스팅은 실패할 수있기에 as?, as! 연산자를 이용한다
as? : "런타임 시점"에 타입 캐스팅(다운 캐스팅)을 하며, 실패할 경우 nil을 리턴
as! : "런타임 시점"에 타입 캐스팅(다운 캐스팅)을 하며, 실패할 경우 에러 발생
C#에서 ( obj ) 로 형변환을 하는경우 => 런타임시에러가 발생.
as를 이용하게되면, null을 반환하게 됨.
728x90
반응형
'개인 공부' 카테고리의 다른 글
Protocol Buffer 사용법 - 컴파일링 (0) | 2023.02.09 |
---|---|
스크랩 ) 동기? 비동기? 블록? 논블록? IOCP (0) | 2023.01.06 |
Protocol Buffer 사용2 (0) | 2022.12.22 |
Protocol Buffer 사용 (0) | 2022.12.22 |
Android Protocl Buffers ver.3 사용하기 proto3 (0) | 2022.12.21 |