Protocol inheritance
The Vehicle protocol contains a set of methods that could apply to any type of vehicle, such as a bike, a car, a snowmobile or even an airplane!
You may wish to define a protocol that contains all the qualities of a Vehicle, but that is also specific to vehicles with wheels. For this, you can have protocols that inherit from other protocols, much like you can have classes that inherit from other classes:
protocol WheeledVehicle: Vehicle { var numberOfWheels: Int { get } var wheelSize: Double { get set }
}
Now any type you mark as conforming to the WheeledVehicle protocol will have all the members defined within the braces, in addition to all of the characteristics of Vehicle. As with subclassing, any type you mark as a WheeledVehicle will have an is-a relationship with the protocol Vehicle.