How can two similar mapView functions exist in a ViewController? : Within the ViewController class, I have two mapview functions:

The first mapView function handles overlays (like lines, shapes on a map, etc.)

    func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer

and the second mapView function handles annotations and pins on the map

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?

Coming from a C/Python background, I do not understand how you can have two functions that are named the same, and they do not overwrite one another. What's the idea behind this process?