То, что вы видите, называется Перегрузка
Перегрузка - это концепция, используемая для избежания избыточного кода, где тот же
Имя метода используется несколько раз, но с другим набором
параметры. Фактический метод, который вызывается во время выполнения
разрешается во время компиляции, что позволяет избежать ошибок во время выполнения.
Java не запоминает имена переменных метода, чтобы определить, какой перегруженный конструктор будет вызываться, вместо этого Java пытается сопоставить тип переменной
Passenger(int) -> Passenger(10)
Passenger(int, int) -> Passenger(10,10)
Passenger(double) -> Passenger(2.5d)
Итак, если вы определили другой конструктор того же шаблона, что и Passenger(double)
, Java выдаст ошибку времени компиляции
конструктор Passenger (double) уже определен в классе Passenger