首页 > 解决方案 > 为什么我在下面的代码中没有收到任何错误?

问题描述

下面是我的代码。

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被忽略?

标签: javaoverridingabstract-class

解决方案


@Override是一个可选注解。如果您将此注解用于不覆盖超类方法且不实现接口方法的方法,编译器会报错。

但是,允许在不使用该注释标记的情况下覆盖方法(尽管使用该注释很有用,因为它可以在您打算覆盖方法时捕获错误但获得您打算覆盖错误的方法的签名)。

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


推荐阅读