자료형 체크

작성일

자료형 체크

class Pet { // 애완동물 클래스
    var name: String
    init(name: String) {
        self.name = name
    }
}

class Cat: Pet { // Pet 클래스를 상속하는 캣 클래스
    var hair: String
    init(name: String, _ hair: String) {
        self.hair = hair
        super.init(name: name) // 부모 클래스의 생성자 호출
    }
}

class Dog: Pet { // Pet 클래스를 상속하는 Dog 클래스
    var kind: String
    init(_ name: String, kind: String) {
        self.kind = kind
        super.init(name: name) // super는 부모 클래스의 것
    }
}

let myDog = Dog("똘똘이", kind: "치와와")
let myCat = Cat(name: "개냥이", "짧은 털")
let myPets: [Pet] = [myDog, myCat]

myPets.forEach { // 콜렉션에 forEach 로 반복문 돌리기
    if $0 is Dog { // is를 통해 해당 객체의 자료형 판별가능!
        print("\($0.name) 는 강아지 에요!")
    } else if $0 is Cat { // $0 배열의 아이템 하나하나
        print("\($0.name) 는 고양이 에요!")
    }
}

출력

똘똘이 는 강아지 에요!
개냥이 는 고양이 에요!