gpt4 book ai didi

java - 为什么我在下面的代码中没有收到任何错误?

转载 作者:行者123 更新时间:2023-11-29 10:08:27 25 4
gpt4 key购买 nike

下面是我的代码。

public abstract class AbstractClass {

public String publicMethod() {
System.out.println("This is Public Method");
return "This is Public Method";
}

abstract public String abstractMethod();
}



public class ConcreteClass extends AbstractClass{

@Override
public String abstractMethod() {
String str = "This is abstract method implementtation in ConcreteClass";
System.out.println(str);
return str;
}

public String abstractMethod(String string) {
String str = "This is overloaded method abstractMethod in ConcreteClass";
System.out.println(str);
return str;
}

public String publicMethod() {
System.out.println("This is Public Method in ConcreteClass");
return "This is Public Method in ConcreteClass";
}

}

所以我在抽象类以及扩展该抽象类的类中都有 public String publicMethod() 方法。我也没有给出 @Override 注释。为什么没有报错?此方法是否也被覆盖或 publicMethod 被忽略?

最佳答案

@Override 是可选注解。如果您将此注释用于未覆盖父类(super class)方法且未实现接口(interface)方法的方法,编译器会给出错误。

但是,允许覆盖方法而不用该注解标记它(尽管使用该注解很有用,因为当您打算覆盖方法时它可以捕获错误但得到了您打算覆盖的方法的签名错误).

是的,您的子类的 publicMethod() 覆盖了同名的父类(super class)方法。

关于java - 为什么我在下面的代码中没有收到任何错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758528/

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