Javaの書き換え(上書き)とオーバーロード(過負荷)2024 年の最新の入門チュートリアル。このコースでは リライト(オーバーライド),ルールを書き換える方法,Superキーワードを使用して、,オーバーロード(過負荷),オーバーロードの違いを書き換え, について学習できます。
書き換えは再書き込みするために、親クラスのメソッドへのアクセスを可能にするために、実装プロセスのサブクラスです! 戻り値やパラメータは変更されません。 つまり、同じケースで、コアが書き換え!
必要に応じて、サブクラスの利点を書き換え、彼らの行動の特定定義します。
それは、必要に応じて実現することができる親クラスのメソッドのサブクラスです。
オブジェクト指向の原則では、書き換えはあなたが任意の既存のメソッドをオーバーライドできることを意味します。 例としては、次のとおりです:
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 } }
次のような結果をコンパイルした上記の例は次のとおりです。
动物可以移动 狗可以跑和走
上記の例では、bが動物の種類をに属していても、見ることができますが、それは移動操作方法犬クラスです。
これは、コンパイル時ではなく、参照型のパラメータをチェックします。
ただし、実行時に、指定されたオブジェクトとオブジェクトの操作の方法のJava仮想マシン(JVM)のタイプ。
moveメソッドはAnimalクラスを存在しますが、実行して実行すると、特定のオブジェクトのメソッドであるため、したがって、上記の例では、コンパイラが成功することができました。
次の例を考えてみます。
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } public void bark(){ System.out.println("狗可以吠叫"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 b.bark(); } }
次のような結果をコンパイルした上記の例は次のとおりです。
TestDog.java:30: cannot find symbol symbol : method bark() location: class Animal b.bark(); ^
全くのb参照型動物の樹皮方法がないため、プログラムは、コンパイルエラーがスローされます。
あなたは、superキーワードを使用するために、サブクラスで親クラスのメソッドを呼び出すために書き換える必要があります。
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ super.move(); // 应用super类的方法 System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal b = new Dog(); // Dog 对象 b.move(); //执行 Dog类的方法 } }
次のような結果をコンパイルした上記の例は次のとおりです。
动物可以移动 狗可以跑和走
過負荷(オーバーロード)は、異なるパラメータを使用して、同じ名前のメソッド内のクラスです。 戻り型は、同じでも異なっていてもよいです。
それぞれのオーバーロードされたメソッド(またはコンストラクタ)は、引数の型のユニークなリストを持っている必要があります。
唯一のオーバーロードコンストラクタ
オーバーロードのルール
public class Overloading { public int test(){ System.out.println("test1"); return 1; } public void test(int a){ System.out.println("test2"); } //以下两个参数类型顺序不同 public String test(int a,String s){ System.out.println("test3"); return "returntest3"; } public String test(String s,int a){ System.out.println("test4"); return "returntest4"; } public static void main(String[] args){ Overloading o = new Overloading(); System.out.println(o.test()); o.test(1); System.out.println(o.test(1,"test3")); System.out.println(o.test("test4",1)); } }
相違点 | オーバーロードされたメソッド | メソッドのオーバーライド |
---|---|---|
パラメータ一覧 | あなたは変更する必要があります | 変更しないでください |
戻り型 | あなたが変更することができます | 変更しないでください |
異常な | あなたが変更することができます | 減少または除去することができ、あなたは、新規またはより広範な例外をスローしてはいけません |
アクセス | あなたが変更することができます | より厳しい制限があってはなりません(制限を低減することができます) |