0Pricing
Swift Academy · Lesson

Upcasting and Downcasting Basics

Move between superclass and subclass types.

Type Casting Overview

Type casting lets you treat an instance as a different type within its class hierarchy. It is checking or changing the static type, not converting data.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let d = Dog(name: "Rex")
print(d.bark())

A Class Hierarchy

Casting needs a hierarchy. Here Dog and Cat both inherit from Animal. A Dog is an Animal.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let pet: Animal = Dog(name: "Rex")
print(pet.name)

All lessons in this course

  1. Upcasting and Downcasting Basics
  2. Conditional Casting with as?
  3. Forced Casting with as! and Its Risks
  4. Checking Types with is
← Back to Swift Academy