You need to move both the declaration of the function and the override into the type declarations from extensions. So Delegate
needs to contain the petIs
implementation in its declaration and Girl
needs to override the petIs
function in its body as well (using the override
keyword) rather than in an extension.
class Delegate: AdoptPet {
func petIs(pet: Animal) {
print("not implemeted")
}
}
class Girl: Delegate {
override func petIs(pet: Animal) {
print(pet)
}
}
class PetCenter {
init () {
}
func setup(adopter: Delegate){
let pet: Animal = .cat
adopter.petIs(pet: pet)
}
}
let petCenter = PetCenter()
let adopter = Girl()
petCenter.setup(adopter: adopter) // cat
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…