public abstract class Test { public static void test(){ } public abstract void test(); }
我觉得这样可以的啊~~为什么编译失败。
认证0级讲师
これは、Java ではインスタンス オブジェクトでクラスの静的メソッドを呼び出すことができるため、静的メソッドとインスタンス メソッドのシグネチャを同じにすることはできないためです。次の例を参照してください。
JVM は誰を実行すべきだと思いますか? たとえすべてが通常のメソッドであっても、同じ名前と同じパラメータを持つことはできません。jvm は愚かになります。
メソッド シグネチャ: メソッドの一意性は、メソッド名 と パラメータ データ型
上記 2 つのメソッドのメソッド名とパラメーターに一貫性があるため、コンパイル プロセス中にエラーが発生します
TestMethod.java:6: エラー: メソッド test() はクラス TestMethod ですでに定義されています リーリー
TestMethod.java:6: エラー: メソッド test()
これは Java の 動的バインディング 機能
静的メソッドと抽象メソッドは両方ともクラスによって定義されるため、同じ名前と同じパラメータを持つことはできません。
Java でのオーバーロードと書き換えでは、そのようなルールは許可されません。
これは、Java ではインスタンス オブジェクトでクラスの静的メソッドを呼び出すことができるため、静的メソッドとインスタンス メソッドのシグネチャを同じにすることはできないためです。次の例を参照してください。
リーリーJVM は誰を実行すべきだと思いますか?
たとえすべてが通常のメソッドであっても、同じ名前と同じパラメータを持つことはできません。jvm は愚かになります。
メソッド シグネチャ: メソッドの一意性は、メソッド名 と パラメータ データ型
によって決まります。上記 2 つのメソッドのメソッド名とパラメーターに一貫性があるため、コンパイル プロセス中にエラーが発生します
これは Java の 動的バインディング 機能
に関連しています。静的メソッドと抽象メソッドは両方ともクラスによって定義されるため、同じ名前と同じパラメータを持つことはできません。
Java でのオーバーロードと書き換えでは、そのようなルールは許可されません。