gpt4 book ai didi

java - java中的@Override

转载 作者:行者123 更新时间:2023-12-01 06:38:33 24 4
gpt4 key购买 nike

假设我得到了以下内容,我什至将其称为伪代码

public class someClass { 

public someClass{
example("Hello Stackoverflow");
}

@Override
public void example(){
System.out.println("Hello World");
}

public void example(String Hello){
System.out.println(Hello);
}
}

在此代码中,将调用方法 public void example(String Hello) 而不是 public void example() 方法。在这种情况下编译器如何工作?编译器必须决定在这种情况下调用哪个方法,因为它们具有相同的名称。有没有类似订单的东西,例如首先尝试@Override方法,如果不起作用,请使用普通方法。或者说这是如何运作的?

最佳答案

不,您所展示的根本不是覆盖 - 它重载。 (@Override 注释的使用显然与重写有关,但这里使用不正确 - 没有可以重写的父类(super class)方法。)

重写是指在父类(super class)中声明方法签名,然后在子类中重写(具有相同的签名)。方法实现是在执行时根据调用该方法的对象的执行时类型来选择的。

重载是指存在多个具有相同名称但不同签名的方法。调用该方法时,会根据该方法参数的编译时类型在编译时选择正确的签名。

例如:

public void foo(int x) {}
public void foo(String y) {}
public void foo(Object o) {}
public void foo() {}


foo(50); // Calls the first method
foo("hello"); // Calls the second method
// Calls the third method, because the compile-time type of the argument is
// Object, even though it's actually a reference to a string at execution time
foo((Object) "hello");
foo(); // Calls the fourth method

关于java - java中的@Override,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com