ホームページ > Java > &#&チュートリアル > Javaでは静的メソッドは継承されますか?

Javaでは静的メソッドは継承されますか?

DDD
リリース: 2024-12-11 19:28:10
オリジナル
416 人が閲覧しました

Do Static Methods Inherit in Java?

Java での静的メソッドの継承

Java の継承に関するドキュメントでは、メンバーがアクセシビリティに基づいて継承されることが説明されています。ただし、静的メソッドに関しては矛盾があるようです。

ドキュメントによると、静的メソッドは継承されません。しかし、次のコードは、サブクラスで静的メソッドにアクセスできることを示しています:

class A {
    public static void display() {
        System.out.println("Inside static method of superclass");
    }
}

class B extends A {
    public void show() {
        // This works - accessing display() by its simple name -
        // meaning it is inherited according to the book.
        display();
    }
}
ログイン後にコピー

これはどのようにして可能ですか?

その答えは、Java の基礎となる継承の実装にあります。アクセス可能なすべてのメソッドは、そのタイプ (静的またはインスタンス) に関係なく、サブクラスによって継承されます。ただし、静的メソッドとインスタンス メソッドの継承には微妙な違いがあります。

同じシグネチャを持つ新しい静的メソッドがサブクラスで定義される場合、古い静的メソッドはオーバーライドされずに隠蔽されます。これは、サブクラスから呼び出された場合には、新しい静的メソッドが優先されることを意味します。ただし、元の静的メソッドには引き続きスーパークラス名を使用してアクセスできます。

対照的に、インスタンス メソッドがサブクラスでオーバーライドされると、新しいインスタンス メソッドが古いインスタンス メソッドを完全に置き換えます。これが、継承されたインスタンス メソッドがサブクラス内の単純名でアクセスできない理由です。

したがって、静的メソッドは Java ドキュメントで継承されるものとして明示的に言及されていませんが、他のすべてのアクセス可能なメンバーとともに暗黙的に継承されます。静的メソッドの継承における唯一の違いは、サブクラス内の同じシグネチャを持つ静的メソッドによって静的メソッドを非表示にできることです。

以上がJavaでは静的メソッドは継承されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート