Почему нет параметра противоречия для переопределения?

C ++ и Java поддерживают ковариацию возвращаемого типа при переопределении методов.

Однако ни один не поддерживает противоречивость в типах параметров - вместо этого это приводит кпогрузка (Java) или скрытие (C ++).

Это почему? Мне кажется, что это не повредит. яМожно найдите одну причину для этого в Java - так как он все равно имеет механизм «выбрать самую конкретную версию» для перегрузки - но не может придумать ни одной причины для C ++.

Пример (Java):

class A {
    public void f(String s) {...}
}
class B extends A {
    public void f(Object o) {...} // Why doesn't this override A.f?
}

Ответы на вопрос(0)

Ваш ответ на вопрос