в общем полиморфизм времени выполнения или динамический
а полиморфизм времени компиляции или статический - это перегрузка
Та полиморфизм - топик для обсуждения не на один час, я просто попытался объяснить человеку написал как можно проще) В разных языках все по разному, например, если говорить о статическом полиморфизме на примере шаблонов, в c++ во время компиляции создаются классы переданного типа, поэтому там в шаблоны можно даже примитивы передавать и это уже даже немножко полиморфизмом тяжело назвать так инстанциируются классы с разными типами полей, а в java дженерики это просто Object который кастится в переданному типу