Har*_*hal 1 java abstract-class overriding
下面是我的代码。
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";
}
}
Run Code Online (Sandbox Code Playgroud)
所以我public String publicMethod()在抽象类以及扩展该抽象类的类中都有方法。我也没有给出@Override注释。为什么没有给出错误?还是这种方法被覆盖还是publicMethod被忽略了?
@Override是可选的注释。如果您将此注释用于不会覆盖超类方法且未实现接口方法的方法,则编译器会给出错误消息。
但是,允许重写方法而不用该注释标记该方法(尽管使用该注释很有用,因为在您打算覆盖某个方法时,它会捕获错误,但会得到您打算覆盖错误的方法的签名)。
是的,您的子类的publicMethod()重写将覆盖同名的超类方法。