是否可以在不同的类中执行方法重载。
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){
}
}
要执行重载,必须在类中使用两个同名且具有不同签名的方法。但在继承中它是如何运作的。 在继承中,是否在子类中创建了非私有方法的副本? 在这个例子中是否执行了重载?
答案 0 :(得分:3)
Overloading表示具有相同名称但签名不同的方法,但不包括特定 class
的等效方法。它是课堂主题,与父母或孩子无关。此外,如果父级重载方法比子级可能或可能不具有相同的行为。此外,如果任何interface
包含重载的签名,则您的类最终会拥有重载的方法。
请注意,您没有使用method3(int i)
父级重载method()
,更多Child
方法与您案例中父级的方法无关。您只能覆盖父级的non-private
和non-static
方法,但不能重载它们,重载没有意义。
答案 1 :(得分:0)
覆盖 - 重新定义子类中的方法而不会干扰签名。这也称为动态绑定,它将在运行时根据传递的对象决定。
重载 - 通过更改方法签名,在同一个类中重新定义方法。这也称为静态绑定,将在编译期间决定。
在这里,在你的特定例子中,我们不应该说method3()是重载的,因为我们没有在同一个类中多次重新定义method3()。