書き換えとは、サブクラスからアクセスが許可されている親クラスのメソッドの実装を書き換える処理であり、戻り値や仮引数は変更できません。つまり、シェルは変更されず、コアが書き換えられます。
オーバーライドの利点は、サブクラスが必要に応じて独自の動作を定義できることです。つまり、サブクラスは必要に応じて親クラスのメソッドを実装できます。
オーバーライド メソッドは、新しいチェック例外や、オーバーライドされたメソッドによって宣言された例外よりも広範囲の例外をスローできません。例:###### クラス動物{
public void move(){
System.out.println("動物は移動できます");
} }
クラス Dog は Animal を拡張します{
public void move(){
System.out.println("犬は走ったり歩いたりできる");
} }
次に引用します:
Animal a = new Animal(); // 動物オブジェクト
Animal b = new Dog(); // 犬オブジェクト
a.move();//Animalクラスのメソッドを実行
b.move();//Dogクラスのメソッドを実行
出力は次のとおりです:
动物可以移动 狗可以跑和走
上の例でわかるように、 b は Animal タイプに属しますが、Dog クラスの move メソッド (オーバーライドするメソッド) を実行します。 これは、コンパイル段階ではパラメーターの参照型のみがチェックされるためです。
ただし、実行時には、Java 仮想マシン (JVM) がオブジェクトのタイプを指定し、オブジェクトのメソッドを実行します。
したがって、上記の例では、Animal クラスに move メソッドが存在するためコンパイルは成功しますが、実行時には特定のオブジェクトのメソッドが実行されます。
b. ルール:
1. パラメータ リストは、オーバーライドされたメソッドのパラメータ リストとまったく同じである必要があります。
3. アクセス権限は、親クラスのオーバーライドされたメソッドのアクセス権限より低くすることはできません。
4. 親クラスのメンバー メソッドは、そのサブクラスによってのみオーバーライドできます。同じパッケージ内のサブクラスが、private および Final として宣言されたメソッドを除く、すべての親クラスのメソッドをオーバーライドできる場合。
5. Final として宣言されたメソッドはオーバーライドできませんが、static として宣言されたメソッドはオーバーライドできませんが、再度宣言することはできます。
6. サブクラスと親クラスが同じパッケージ内にない場合、サブクラスは、public および protected と宣言されている親クラスの非finalメソッドのみをオーバーライドできます。
7. オーバーライドされたメソッドは、例外をスローするかどうかに関係なく、任意の非必須例外をスローできます。ただし、オーバーライドされたメソッドは、新しい必須例外や、オーバーライドされたメソッドで宣言された例外よりも広範囲の必須例外をスローすることはできません。また、その逆も同様です。
2. オーバーロード:
cと同様の意味です。
オーバーロードされた各メソッド (またはコンストラクター) には、パラメーターの型の一意のリストが必要です。
最も一般的に使用されるのは、コンストラクターのオーバーロードです。
オーバーライドとの違いは、オーバーロードはさまざまなパラメーターに焦点を当てることです。
3. ポリモーフィズム:
a.定義:
ポリモーフィズムが存在するための 3 つの必要条件:
1.
を継承 2.
を書き直す 3. 親クラス参照は、サブクラス オブジェクト
を指します。 たとえば、この例では、親クラスの参照がサブクラスのオブジェクトを指しています:
親 p = new Child();
注: ポリモーフィズムを利用したメソッドを呼び出す場合は、親クラスにそのメソッドが存在するかどうかを確認し、存在しない場合はコンパイルエラーが発生しますので、存在する場合はサブクラスにある同名のメソッドを呼び出してください。
b. 仮想機能:
仮想関数はポリモーフィズムの基礎の 1 つです。もちろん、JAVA のすべての関数はデフォルトで C の意味での仮想関数であり、動的なバインディングが Java のデフォルトの動作であるため、特に注意する必要はありません。
以上がJava の書き換え、オーバーロード、ポリモーフィズムを定義して使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。