オーバーロード: メソッド名が同じでパラメータが異なる複数の関数
注: 1. パラメータが異なるとは、パラメータのタイプ、パラメータの数、およびパラメータの順序に少なくとも 1 つの違いがあることを意味します。
2. 戻り値、例外、およびアクセス修飾子をオーバーロードの条件として使用することはできません (匿名呼び出しの場合、あいまいさが発生するためです。たとえば、 void a () および int a() の場合、a() が呼び出された場合、あいまいさが発生します)。
3.mainメソッドもオーバーロード可能
オーバーライド: サブクラスは親クラスのメソッドを書き換えます。メソッド名とパラメーターの型がまったく同じであること (パラメーターをサブクラスにすることはできません)、戻り値と例外が親クラスのものより小さいか同じであること (つまり、つまり、それらは親クラスのサブクラスであり、アクセス修飾子は親クラスのアクセス修飾子よりも小さいか、親クラスと同じです。
同じものが2つ、小さいものが2つ、大きいものが1つ
注: サブクラスのインスタンス メソッドは親クラスの静的メソッドをオーバーライドできません。サブクラスの静的メソッドは親クラスのインスタンス メソッドをオーバーライドできません (コンパイル中にエラーが発生します)。
Hidden: 親クラスとサブクラスに同じ名前の属性またはメソッドがある場合、同じ名前の親クラスの属性またはメソッドは形式上は欠落していますが、実際にはまだ存在します。
注: 非表示が発生すると、宣言タイプがどのようなクラスであっても、対応するクラスのプロパティまたはメソッドが呼び出され、動的バインディングは発生しません。
メソッド隠蔽の形式は 1 つだけです。つまり、同じ静的メソッドが親クラスとサブクラスに存在します。
プロパティは非表示のみ可能であり、上書きはできません
サブクラスのインスタンス変数/静的変数は、親クラスのインスタンス/静的変数を非表示にすることができます。つまり、変数を相互に非表示にすることができます。
隠すことと覆うことの違い:
隠し属性。サブクラスが親クラスに強制された後、親クラスの属性にアクセスします。
オーバーライドされたメソッドは、サブクラスが親クラスに強制的に変換された後も、サブクラス自体のメソッドを呼び出します。
カバレッジは動的にバインドされており、RTTI (実行時タイプ識別、実行時タイプ検査) の対象となるため、非表示は RTTI の対象ではありません。つまり、RTTI はカバレッジのみを目的としており、非表示を目的とするものではありません。
特別な状況:
1. Final で変更されたプロパティは非表示にすることはできますが、代入することはできません。つまり、= を使用して代入することはできません。ネットでは、final プロパティは参照型変数の後であるため、この記述は正確ではありません。他のオブジェクトを指しますが、それ自体の値は変更できます。final 属性は実行時に初期化できますが、初期化ステートメントが必要です。
2.最終的に変更されたメソッドはオーバーライドできず、オーバーロードされる可能性があります
3. 最終的に変更されたクラスは継承できません
4. private メソッドは暗黙的に Final を追加します。