Protocols
There are times when we would like to describe the implementations (methods, properties, and other requirements) of a class without actually providing any implementation. For this, we would use protocols.
Protocols define a blueprint of methods, properties, and other requirements for a class or a structure. A class or a structure can then provide an implementation that conforms to those requirements. The class or structure that provides the implementation is said to conform to the protocol.