이번 시간에는 업캐스팅과 다운캐스팅에 대해서 간단히 알아보고 Swift에서 사용되는 옵셔널이 코틀린에서 사용되는데 두 차이점에 대해서 간단히 표로 정리해보려고 합니다!
업캐스팅(Upcasting)과 다운캐스팅(Downcasting)
업캐스팅(Upcasting)과 다운캐스팅(Downcasting)은 프로그래밍에서 주로 객체 지향 언어에서 사용되는 개념입니다. 이 두 용어는 클래스의 계층 구조와 관련이 있으며, 특히 상속 관계에 있는 클래스 사이에서 타입 변환을 할 때 사용됩니다.
먼저 업캐스팅에 대해서 살펴보겠습니다.
업캐스팅 (Upcasting): 업캐스팅은 하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것을 말합니다. 이는 항상 안전하게 수행할 수 있으며, 별도의 검사나 예외 처리가 필요하지 않습니다. 예를 들어, 'Dog' 클래스가 'Animal' 클래스를 상속받았다면, 'Dog' 인스턴스를 'Animal' 타입으로 업캐스트 할 수 있습니다.
소스 코드로 살펴보겠습니다.
class Animal { }
class Dog: Animal { }
let myDog = Dog()
let myAnimal = myDog as Animal // Upcasting
다음은 다운캐스팅입니다.
다운캐스팅 (Downcasting): 다운캐스팅은 상위 클래스의 인스턴스를 하위 클래스 타입으로 변환하는 것을 말합니다. 이 작업은 항상 안전하지 않기 때문에 실행 시간에 실패할 가능성이 있습니다. 따라서 Swift와 같은 언어에서는 안전한 다운캐스트(as?)와 강제 다운 케스트(as!) 두 가지 방법을 제공합니다.
소스 코드로 살펴보겠습니다.
class Animal { }
class Dog: Animal { }
let myAnimal: Animal = Dog()
if let myDog = myAnimal as? Dog {
// Downcast succeeded; `myDog` is of type `Dog`.
} else {
// Downcast failed; `myAnimal` was not of type `Dog`.
}
여기서 중요한 점은 실제 객체의 타입이 아닌 참조 변수의 타입만 변경된다는 것입니다. 실제 객체 자체가 변경되지 않습니다.
Swift와 Kotlin 옵셔널의 차이
Swift와 Kotlin 두 언어 모두 옵셔널을 사용하는 언어입니다. 하지만 옵셔널을 사용한다고 해서 내용이 같지 않고 조금씩 차이가 있기 때문에 간단하게 알아볼 수 있도록 표로 정리를 해보았습니다.
감사합니다.
틀린 부분이 있거나 더 좋은 내용 훈수 환영합니다!
공감과 댓글 부탁드립니다.
'Apple > Swift' 카테고리의 다른 글
[Swift] 함수에 대한 개념과 다양한 예시 소스 (0) | 2023.09.29 |
---|---|
[Swift] 제어문과 다양한 예제 정리 (0) | 2023.09.26 |
[Swift] 옵셔널과 Nil합병 연산자 (0) | 2023.09.23 |
[Swift] Type Safety 개념, 옵셔널의 개념과 예시 (0) | 2023.09.19 |
[Swift] 데이터 타입, 상수, 변수의 개념과 예시 (0) | 2023.09.12 |