ホームページ >Java >&#&チュートリアル >Java における静的メソッドの継承はインスタンス メソッドの継承とどのように異なりますか?

Java における静的メソッドの継承はインスタンス メソッドの継承とどのように異なりますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 02:12:09495ブラウズ

How Does Static Method Inheritance Differ from Instance Method Inheritance in Java?

Java の静的メソッドの継承

Java では、『A Programmer's Guide to Java™ SCJP Certification』に概説されている継承ルールが当てはまります。たとえばメソッド。アクセス可能なインスタンス メソッドはサブクラスによって継承されます。ただし、この本の説明では、継承における静的メソッドの固有の動作が考慮されていません。

静的メソッドは、その名前が示すように、インスタンスではなくクラスに属します。どのサブクラスがアクセスしているかに関係なく、クラス名を通じてアクセスできます。この特性により、インスタンス メソッドの標準継承ルールからの逸脱が生じます。

サブクラスがそのスーパークラスから静的メソッドを継承する場合、そのメソッドを置き換えたりオーバーライドしたりすることはありません。代わりに、元の静的メソッドはサブクラス内でアクセス可能なままになります。これは、オーバーライドが発生する可能性があるインスタンス メソッドとは対照的です。この違いの理由は、静的メソッドが個々のインスタンスではなく、クラス全体に関連付けられているためです。

提供されたコード例では、クラス B はそのスーパークラス A の静的メソッド display() にアクセスできます。 、単純名 display() または完全修飾名 B.display() のいずれかを使用します。静的メソッドは継承され、クラス B 独自のメソッド セットの一部になるため、どちらのアプローチも有効です。

Sun Java チュートリアルでは、サブクラスはそのサブクラスのすべての public および protected メンバーを継承すると明示的に述べられていることに注目してください。静的 (クラス) メソッドを含む親。継承された静的メソッドと非静的メソッドの違いは、同じシグネチャを持つ新しいメソッドがサブクラスで定義されたときの動作にあります。非静的メソッドはオーバーライドできますが、静的メソッドは非表示になります。これは、サブクラス内から呼び出された場合は、サブクラス内の新しい静的メソッドが優先されますが、スーパークラスから呼び出された場合は、元の静的メソッドに引き続きアクセスできることを意味します。

以上がJava における静的メソッドの継承はインスタンス メソッドの継承とどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。