Swift
Beginner
1 min read
Inheritance and Initializers
Example
class Animal {
var name: String
var sound: String
init(name: String, sound: String) {
self.name = name
self.sound = sound
}
func makeSound() -> String {
return "\(name) says \(sound)"
}
func describe() -> String {
return "Animal: \(name)"
}
}
class Dog: Animal {
var breed: String
init(name: String, breed: String) {
self.breed = breed
super.init(name: name, sound: "Woof")
}
// Override method
override func describe() -> String {
return "\(super.describe()), Breed: \(breed)"
}
// New method
func fetch() -> String { "\(name) fetches the ball!" }
}
class GoldenRetriever: Dog {
init(name: String) {
super.init(name: name, breed: "Golden Retriever")
}
override func makeSound() -> String {
return "\(name) barks happily!"
}
}
let dog = GoldenRetriever(name: "Buddy")
print(dog.makeSound()) // Buddy barks happily!
print(dog.describe()) // Animal: Buddy, Breed: Golden Retriever
print(dog is Animal) // true - type checking