Разница между полиморфизмом и перегрузкой метода заключается во времени, когда определяется фактический метод для выполнения. Причина этого в том, что когда метод перегружен, например, в:
account = new BankAccount();
account = new BankAccount(1000);
Компилятор может указать, какой конструктор использовать сигнатурой метода, включая количество и типы предоставленных параметров. Этот выбор метода, который нужно использовать во время компиляции, до того, как программа запустится, называется ранним связыванием.
С другой стороны, когда мы используем полиморфный вызов метода, такого как x.getMeasure (), фактический вызываемый метод getMeasure () зависит от того, к какому типу относится объект x. Поскольку объекты не создаются до запуска программы, вызываемый метод определяется во время выполнения. Поэтому виртуальная машина, а не компилятор выбирает соответствующий метод. Этот метод выбора называется поздним связыванием.