Перегрузка метода и полиморфизм - это две совершенно разные концепции. Полиморфизм относится к наследованию и определяет, с какого уровня иерархии классов вызывается метод. Перегрузка методов - это создание двух методов в одном месте с одинаковым именем, которые принимают разные аргументы. Например:
class A{
public void doSomething(){
System.out.println("A method");
}
//method overloaded with different arguments-- no polymorphism
//or inheritance involved!
public void doSomething(int i){
System.out.println("A method with argument");
}
}
class B extends A{
//method polymorphically overridden by subclass.
public void doSomething(){
System.out.println("B method");
}
}
//static type is A, dynamic type is B.
A a = new B();
a.doSomething(); //prints "B method" because polymorphism looks up dynamic type
//for method behavior