ホームページ >Java >&#&チュートリアル >Java で静的メソッドをオーバーライドできますか?驚くべき答え。
Java での静的メソッドのオーバーライドとオーバーロード
静的メソッドはオブジェクト指向プログラミングに不可欠な部分ですが、Java でのその動作は特にオーバーライドとオーバーロードに関しては、やや混乱する可能性があります。
静的メソッドのオーバーライド
Java では、従来の意味での静的メソッドのオーバーライドは許可されていません。これは、静的メソッドがクラスの特定のインスタンスではなく、クラスにバインドされているためです。したがって、サブクラスが親クラスのメソッドと同じ名前の新しい静的メソッドを定義しても、親メソッドはオーバーライドされません。
非表示とは、メソッドを呼び出すオブジェクトの型に関係なく、コンパイラが常にサブクラスの静的メソッドを呼び出すことを意味します。これは、メソッドが実行時ではなくコンパイル時に解決されるためです。
静的メソッドのオーバーロード
オーバーライドとは異なり、Java の静的メソッドではオーバーロードが可能です。オーバーロードとは、名前は同じだがパラメーター リストが異なる複数のメソッドを持つ機能を指します。 Java では、インスタンス メソッドと同様に、静的メソッドをオーバーロードできます。
次のコードは、静的メソッドのオーバーライドとオーバーロードの違いを示しています。
<code class="java">class Parent { public static void method() { System.out.println("Parent method"); } } class Child extends Parent { // Hides the static method in the parent class public static void method() { System.out.println("Child method"); } // Overloads the static method in the parent class public static void method(int x) { System.out.println("Child method with parameter"); } } public class Main { public static void main(String[] args) { Parent p = new Child(); p.method(); // Calls the static method in the Child class Child.method(); // Also calls the static method in the Child class Child.method(10); // Calls the overloaded static method in the Child class } }</code>
出力:
Child method Child method Child method with parameter
上記の例では、子クラスのmethod()メソッドが親クラスのmethod()メソッドを隠しています。ただし、子クラスのメソッド(int x)は、親クラスのメソッド()メソッドをオーバーロードします。
以上がJava で静的メソッドをオーバーライドできますか?驚くべき答え。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。