Разные методы могут иметь одно имя, но разные аргументы.
Например конструктор:
1) конструктор без аргументов (no_arg);
2) конструктор с параметрами (с аргументами).
class Tree {
int height;
Tree () { height=0;}
Tree (int initialHeight) {height=initialHeight;}
}
…
new Tree (); // вызов без параметров
Tree t = new Tree (5); // вызов с параметрами
Перегруженные методы должны иметь разный список типов аргументов - хотя бы их порядок.
void f (String S, int i){}
void f (int i, String S) {}
Возвращаемое значение при перегрузке значения не имеет.
Конструктор по умолчанию
Это конструктор без аргументов.
Если конструкторов в классе не объявили, то конструктор по умолчанию будет создан компилятором.
class Bird {}
…
Bird b = new Bird ();
Если есть хотя бы один конструктор, то компилятор конструктор по умолчанию не создает!
Bird2 (int i) {}
Bird2 (double d) {}
…
Bird2 b2 = new Bird (1);
Bird2 b3 = new Bird (1.0);
Bird2 b4 = new Bird ();//не работает!!!