public class TestOverriding {
private static class Parent {
String getName() { return "Parent"; }
}
private static class Child extends Parent {
@Override
String getName() { return "Child"; }
}
public static void main(String[] args) {
Parent child = new Child();
// Prints "Child"
System.out.println(child.getName());
}
}
Overload - перегрузка - объявление методов (или конструкторов) с одинаковыми именами, но разными с сигнатурами. Пример - все конструкторы любого класса, если их больше одного. В Java выбор выполняемого метода при перегрузке происходит статически (во время компиляции) и не зависит от типа объекта в рантайме:
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
public class TestOverloading {
static void classifyCollection(Collection c) {
System.out.println("Collection");
}
static void classifyCollection(Set s) {
System.out.println("Set");
}
public static void main(String[] args) {
Collection c = new HashSet