java - 抽象类的静态方法和抽象方法为什么不能同名同参?
PHP中文网
PHP中文网 2017-04-17 18:00:38
0
5
622
public abstract class Test {

    public static void test(){

    }

    public abstract void test();

}

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

PHP中文网
PHP中文网

认证0级讲师

全員に返信(5)
伊谢尔伦

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

リーリー
いいねを押す +0
阿神

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

いいねを押す +0
左手右手慢动作

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

によって決まります。

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

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

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

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

に関連しています。
いいねを押す +0
刘奇

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

いいねを押す +0
刘奇

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート