不同类中的方法重载

时间:2015-09-08 12:27:11

标签: java inheritance polymorphism overloading

是否可以在不同的类中执行方法重载。

class Parent{
    // Private method
    private void method1(){
        System.out.println("In private method of Parent class");
    }
    void method2(){
    }
    void method3(){
    }
}

class Child extends Parent{
    void method3(int i){
    }
}

要执行重载,必须在类中使用两个同名且具有不同签名的方法。但在继承中它是如何运作的。 在继承中,是否在子类中创建了非私有方法的副本? 在这个例子中是否执行了重载?

2 个答案:

答案 0 :(得分:3)

Overloading表示具有相同名称但签名不同的方法,但不包括特定 class的等效方法。它是课堂主题,与父母孩子无关。此外,如果父级重载方法比子级可能或可能不具有相同的行为。此外,如果任何interface包含重载的签名,则您的类最终会拥有重载的方法。

请注意,您没有使用method3(int i)父级重载method(),更多Child方法与您案例中父级的方法无关。您只能覆盖父级的non-privatenon-static方法,但不能重载它们,重载没有意义。

答案 1 :(得分:0)

覆盖 - 重新定义子类中的方法而不会干扰签名。这也称为动态绑定,它将在运行时根据传递的对象决定。

重载 - 通过更改方法签名,在同一个类中重新定义方法。这也称为静态绑定,将在编译期间决定。

在这里,在你的特定例子中,我们不应该说method3()是重载的,因为我们没有在同一个类中多次重新定义method3()。