覆盖和重载之间的区别?

Difference between Overriding and Overloading?

只是想弄清楚重载和覆盖方法之间的区别...考虑以下情况;

假设我有一个class,比方说'class Master'。假设我有 sub class、'class Apprentice',这样两个 classes 通过继承相关。

       public class Apprentice extends Master

假设考虑到 master class 包含 2 个 void 方法,每个方法都命名为 attack,一个接受一个 Single 字符串参数,另一个接受一个 String 和一个 Int 参数。

        public class Master{
void attack(String bodyPart){
//code for attacking
}

void attack(String bodyPart, int Damage){
//code for specific attack
}

如果 Apprentice class 有 2 个方法名称完全相同,参数完全相似,Master class 中定义的攻击方法是否会被重载或覆盖?

岂不是既被覆盖又被重载了!?

覆盖:

 class A {
     public void do() { /* ... */ }
 }

 class B extends A {
     @Override
     public void do() { /* ... */ } // have an other definition than the one in A
 }

过载:

class C {
    public void do(E e) { /* ... */ }
    public void do(E e, F f) { /* ... */ } // same name but different arguments
}

它们是两个不同的概念。