ホームページ >Java >&#&チュートリアル >静的キーワード: オーバーロード、オーバーライド、および this と super の役割
この投稿では、static のコンテキストにおける メソッドのオーバーロード と メソッドのオーバーライド の概念に焦点を当て、static キーワードに関するこれまでの議論を拡張します。方法。また、 this キーワードと super キーワードが静的コンテキストでどのように動作するか (または動作しないか) についても説明します。
静的キーワードを初めて使用する場合は、まず静的変数と静的メソッドを確認すると役立つかもしれません。
この投稿では、静的コンテキストでの this と super の動作について触れているため、This Keyword と Super Keyword についても確認することをお勧めします。
静的メソッドのオーバーロード
静的メソッドがオーバーライドできないの理由
静的コンテキストでの this キーワードと super キーワードの使用
主要な概念を示す例
Java では、オーバーロード により、同じ名前のメソッドが異なるパラメータ リストで存在することができます。静的メソッドは、インスタンス メソッドと同様にオーバーロードできます。ただし、オーバーロードはコンパイル時に発生することに注意してください。
package keywords.static_keyword; public class StaticVariables { static int idStatic = 1; public StaticVariables(String name) { this.id = ++idStatic; this.name = name; } int id; String name; static void displayText() { System.out.println("DisplayText called. ID: " + idStatic); } // Overloaded static method with a parameter static void displayText(String name) { System.out.println("Overloaded DisplayText called. Name: " + name); } public static void main(String[] args) { StaticVariables.displayText(); StaticVariables.displayText("Static Overload Example"); } }
メソッドのオーバーロード:displayText メソッドは 2 つのバージョンでオーバーロードされます。1 つはパラメータなし、もう 1 つは String パラメータありです。
Java はコンパイル時中にパラメータ リストに基づいて 2 つのメソッドを区別できるため、これは 合法です。
Java では静的メソッドのオーバーライドは許可されていません。静的メソッドはオブジェクト インスタンスではなくクラスにバインドされているため、メソッド オーバーライドの基礎であるランタイム ポリモーフィズムには参加しません。
ただし、静的変数は継承され、子クラスからアクセスまたは変更できます。
package keywords.static_keyword; public class StaticVariables { static int idStatic = 1; public StaticVariables(String name) { this.id = ++idStatic; this.name = name; } int id; String name; static void displayText() { System.out.println("DisplayText called. ID: " + idStatic); } // Overloaded static method with a parameter static void displayText(String name) { System.out.println("Overloaded DisplayText called. Name: " + name); } public static void main(String[] args) { StaticVariables.displayText(); StaticVariables.displayText("Static Overload Example"); } }
package keywords.static_keyword; public class CannotOverrideStaticMethod extends StaticVariables { public CannotOverrideStaticMethod(String name) { super(name); } // Attempting to override the static method // This will cause a compile-time error /* @Override static void displayText() { System.out.println("Overridden DisplayText"); } */ @Override void display() { // Static variables are inherited from the parent class idStatic = 90; // Access and modify the parent's static variable System.out.println("ID: " + idStatic + ", Name: " + name); super.display(); // Call the parent class's non-static method } // Correct way to use static methods from the parent class static void displayText() { StaticVariables.displayText(); // Call the parent class static method } public static void main(String[] args) { displayText(); // Calls the static method defined in this class } }
static void displayText() { // Cannot use 'this' in a static context this.display(); // --> Compile-time error }
この投稿では、静的メソッドのオーバーロードとオーバーライドの微妙な違いについて説明し、静的コンテキストで this と super を使用する際の制約について説明し、継承全体で静的変数がどのように動作するかを説明しました。これらの概念は、Java の静的メンバーとインスタンス メンバーがどのように異なるかを理解するために不可欠です。
Java の基礎
アレイインタビューの要点
Java メモリの基礎
コレクション フレームワークの基本
コーディングを楽しんでください!
以上が静的キーワード: オーバーロード、オーバーライド、および this と super の役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。