java - 重写和重载之间的区别?

标签 java methods polymorphism overloading overriding

只是想澄清重载和重写方法之间的区别...考虑下面的场景;

假设我有一个类(class),就说“类主任”。假设我有子类“Apprentice 类”,这样两个类通过继承相关。

       public class Apprentice extends Master

假设主类包含 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 类有 2 个名称完全相同且参数完全相同的方法,那么 Master 类中定义的攻击方法是否会被重载或覆盖?

它不会被覆盖和重载吗!?

最佳答案

覆盖:

 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
}

它们是两个不同的概念。

关于java - 重写和重载之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31149195/

相关文章:

c++ - 函数是否可能只接受给定参数的一组有​​限类型?

c++ - 如何检查多态子类的模板参数类型

java - 如果基础窗口在 ESC 上关闭,如何为 JPopupMenu 启用 ESC-Close?

java - 为什么 ASM 无法为我的生成类计算出正确的最大值?

python - 分组依据和引用移位值

objective-c - 子类可以在继承方法的参数中的 block 中添加参数吗?

java - ScrollView 被切入主布局内

java - 如何在不输出括号和逗号的情况下输出Arraylist中的数字列表?

Java Getter 和 Setter 方法

c++ - 子类中具有不同值的静态基类属性