> реализация может быть различна, что в свою очередь позволит нам создавать методы с одинаковыми названиями, входящими данными но разным функционалом
Зависит что ты имеешь ввиду под разным функционалом. Ты должен следовать построенному соглашению. Если ты вдруг переопределил метод и реализовал его с абсолютно неподходящей логикой, но одинаковой сигнатурой метода, то это будет ошибкой.