検索

ホームページ  >  に質問  >  本文

java - 抽象类的静态方法和抽象方法为什么不能同名同参?

public abstract class Test {

    public static void test(){

    }

    public abstract void test();

}

我觉得这样可以的啊~~为什么编译失败。

PHP中文网PHP中文网2889日前628

全員に返信(5)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 18:02:38

    これは、Java ではインスタンス オブジェクトでクラスの静的メソッドを呼び出すことができるため、静的メソッドとインスタンス メソッドのシグネチャを同じにすることはできないためです。次の例を参照してください。

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-17 18:02:38

    JVM は誰を実行すべきだと思いますか?
    たとえすべてが通常のメソッドであっても、同じ名前と同じパラメータを持つことはできません。jvm は愚かになります。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 18:02:38

    メソッド シグネチャ: メソッドの一意性は、メソッド名パラメータ データ型

    によって決まります。

    上記 2 つのメソッドのメソッド名とパラメーターに一貫性があるため、コンパイル プロセス中にエラーが発生します

    TestMethod.java:6: エラー: メソッド test()

    はクラス TestMethod ですでに定義されています リーリー

    これは Java の 動的バインディング 機能

    に関連しています。

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 18:02:38

    静的メソッドと抽象メソッドは両方ともクラスによって定義されるため、同じ名前と同じパラメータを持つことはできません。

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 18:02:38

    Java でのオーバーロードと書き換えでは、そのようなルールは許可されません。

    返事
    0
  • キャンセル返事