Reputation: 143
I am looking a way to override base class extension method in subclass. As per my knowledge swift doesn't allow to do this directly. This method is protocol method. Is there any way to achieve this?
protocol Creator {
func create()
}
class BaseClass {
}
extension BaseClass: Creator {
func create() {
print("create")
}
}
class Subclass1: BaseClass {
// override create method
// add own implementation of create()
}
class Subclass2 : BaseClass {
// override create method
// add own implementation of create()
}
let subclass1 = Subclass1().create() // execute create from Subclass1
let subclass2 = Subclass2().create() // execute create from Subclass2
Upvotes: 2
Views: 1912
Reputation: 535222
Just move the declaration of create
into the actual class declaration. Everything else can stay the same:
protocol Creator {
func create()
}
class BaseClass {
func create() {
print("create")
}
}
extension BaseClass: Creator {
}
// and so on
The effect is precisely the same, but now override func create()
is legal in your subclasses.
Upvotes: 4