Overriding and overloading methods
Swift allows us to define a method with the same name many times with different arguments. This feature is known as method overloading. In some cases, as in our previous example, we can overload the designated initializer. However, it is very important to mention that a similar effect might be achieved with optional parameters or default values for specific arguments.
For example, we can take advantage of method overloading to define multiple versions of the bark
method that we have to define in the Dog
class. However, it is very important to avoid code duplication when we overload methods.
Sometimes, we define a method in a class, and we know that a subclass might need to provide a different version of the method. When a subclass provides a different implementation of the method defined in a superclass, with the same name, arguments, and return type, we say that we are overriding a method. When we override a method, the implementation in the subclass overwrites...