One protocol can inherit from another in a process known as protocol inheritance. Unlike with classes, you can inherit from multiple protocols at the same time before you add your own customizations on top.
We’re going to define three protocols: Payable
requires conforming types to implement a calculateWages()
method, NeedsTraining
requires conforming types to implement a study()
method, and HasVacation
requires conforming types to implement a takeVacation()
method:
protocol Payable {
func calculateWages() -> Int
}
protocol NeedsTraining {
func study()
}
protocol HasVacation {
func takeVacation(days: Int)
}
We can now create a single Employee
protocol that brings them together in one protocol. We don’t need to add anything on top, so we’ll just write open and close braces:
protocol Employee: Payable, NeedsTraining, HasVacation { }
Now we can make new types conform to that single protocol rather than each of the three individual ones.
SPONSORED Alex is the iOS & Mac developer’s ultimate AI assistant. It integrates with Xcode, offering a best-in-class Swift coding agent. Generate modern SwiftUI from images. Fast-apply suggestions from Claude 3.5 Sonnet, o3-mini, and DeepSeek R1. Autofix Swift 6 errors and warnings. And so much more. Start your 7-day free trial today!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.