is 연산자
is
연산자는 특정 인스턴스가 지정된 타입인지 확인하는데 사용한다.
만약 인스턴스가 지정된 타입의 인스턴스라면 'true' 를 반환하고, 그렇지 않으면 'false' 를 반환합니다.
class Animal {
}
class Dog: Animal {
}
let animal = Animal()
let dog = Dog()
print(animal is Animal) // 출력값 : true
print(animal is Dog) // 출력값 : false Dog는 Animal을 상속받고 있으므로 is 관계가 될 수 없다.
print(dog is Animal) // 출력값 : true
print(dog is Dog) // 출력값 : true
as 연산자
as 연산자는 인스턴스의 타입을 다른 타입으로 변환하는데 사용된다.
Upcasting :서브 클래스인 인스턴스를 슈퍼 클래스 타입으로 변환하는 것 이 때는 캐스팅이 안전하므로 강제 변환할 필요 없다.
서브 클래스는 슈퍼클래스의 모든 속성과 메서드를 상속받기 때문에 슈퍼클래스 타입으로 변환해도 괜찮다Downcasting : 슈퍼클래스 인스턴스를 서브 클래스 타입으로 변환하는 것 이 때는 안전하지 않으므로 옵셔널 타입으로 변환하는 방법을 추천 (강제 캐스팅은 비추천)
슈퍼클래스의 인스턴스가 실제로 서브 클래스 인스턴스와 다를 수 있기 때문에 안전하지 않음
class Animal {
// 슈퍼 클래스
}
class Dog: Animal {
// 서브 클래스
}
let dog = Dog()
let animal = dog as Animal // Upcasting 출력값 : Dog
let newDog = animal as? Dog // Downcasting 옵셔널 사용하여 출력
if let anotherDog = animal as? Dog { // Downcasting 옵셔널 바인딩 하여 출력 (이 방식을 가장 많이 사용)
print("이건 개다")
} else {
print("이건 개가 아니다")
}
'◽️ Programming > Swift 문법' 카테고리의 다른 글
Swift Extention (0) | 2024.03.02 |
---|---|
Swift Initializer (0) | 2024.03.02 |
Swift Class 상속 , overriding (0) | 2024.03.02 |
Swift Instance (0) | 2024.03.01 |
Swift 계산 속성 (0) | 2024.03.01 |