Java における静的メソッドの継承: 本書の説明の明確化
静的メソッドは継承されないという書籍の主張にもかかわらず、Java ではサブクラスが許可されています静的メソッドを含むすべてのアクセス可能なメソッドを継承します。質問で示されている例は、静的メソッド display() がスーパーを使用せずにサブクラス B でアクセスできるため、この動作を例示しています。
この継承は、Java 継承の基本的な規則に基づいています。サブクラスは、そのスーパークラスのパブリック、プロテクト、および (同じパッケージ内の) パッケージプライベート メンバーをすべて継承します。違いは、静的メソッドと非静的メソッドがサブクラスで新しく定義されたメソッドとどのように対話するかにあります。
サブクラスが継承されたメソッドと同じシグネチャを持つ新しい非静的メソッドを定義すると、そのメソッドは親のメソッドをオーバーライドします。ただし、静的メソッドの場合、サブクラスで新しいメソッドを定義すると、親のメソッドが非表示になるだけです。これは、静的メソッドはクラス自体にバインドされているのに対し、非静的メソッドはクラスのインスタンスに関連付けられているためです。
したがって、この本の説明は主に非静的メソッドに関係しており、非静的メソッドはそのメソッドに従ってアクセシビリティを継承します。宣言された可視性 (パブリック、プロテクト、またはパッケージプライベート)。一方、静的メソッドはより広範な継承規則に従い、アクセス可能な限りサブクラスで使用できます。
以上がJava サブクラスは静的メソッドを継承しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。