方法重载意味着根据输入来制作功能的多个版本。例如:
public Double doSomething(Double x) { ... }public Object doSomething(Object y) { ... }在编译时选择要调用的方法。例如:
Double obj1 = new Double();doSomething(obj1); // calls the Double versionObject obj2 = new Object();doSomething(obj2); // calls the Object versionObject obj3 = new Double();doSomething(obj3); // calls the Object version because the compilers see the // type as Object // This makes more sense when you consider something likepublic void myMethod(Object o) { doSomething(o);}myMethod(new Double(5));// inside the call to myMethod, it sees only that it has an Object// it can't tell that it's a Double at compile time方法覆盖意味着通过原始方法的子类定义方法的新版本
class Parent { public void myMethod() { ... }}class Child extends Parent { @Override public void myMethod() { ... }}Parent p = new Parent();p.myMethod(); // calls Parent's myMethodChild c = new Child();c.myMethod(); // calls Child's myMethodParent pc = new Child();pc.myMethod(); // call's Child's myMethod because the type is checked at runtime // rather than compile time希望对您有所帮助



