なぜ私はコードの下にすべてのエラーを取得していないのですか?

ःArshl:

以下は私のコードです。

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()その抽象クラスを拡張するabtractクラス内だけでなく、クラスのメソッドを。また、私は与えられていない@Override注釈を。なぜエラーが与えられていませんか?また、この方法は、オーバーライドされたりpublicMethod、無視なっていますか?

彼らは次のとおりでした:

@Overrideオプションの注釈があります。あなたは、スーパークラスのメソッドをオーバーライドしないと、インターフェイスメソッドを実装していない方法でこの注釈を使用している場合、コンパイラはエラーになります。

(あなたがメソッドをオーバーライドしていますが間違って上書きしようとするメソッドのシグネチャを取得しようとするとき、それはエラーをキャッチすることができますので、その注釈を使用すると、便利ですが)しかし、その注釈とそれをマークせずにメソッドをオーバーライドすることが許可されています。

はい、あなたのサブクラスのpublicMethod()オーバーライド同じ名前のスーパークラスのメソッド。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=314381&siteId=1