Java基礎の重載(Overload)と書き換え(Override)の詳細


一、重載(Overload)
リロードは同じクラスですが、パラメータが違います。戻るタイプは同じでもいいです。
各キャリアの方法(または構造関数)にはユニークなパラメータタイプのリストが必要です。
一番よく使われているところはコンストラクションの重さです。
リロードのメリット:
1.異なるパラメータの種類やパラメータの個数に対して、複数の関数を書く必要はありません。
2.複数の関数は同じ名前を使っていますが、パラメータテーブル、つまりパラメータの個数または(および)データの種類は異なります。呼び出し時、メソッド名は同じですが、パラメータテーブルによって自動的に対応する関数を呼び出すことができます。
3.リロードの最も直接的な役割は、プログラマが異なるパラメータの個数、順序、タイプ、自動マッチング方法に従って、関数名またはメソッド名を書いたことのある反復ステップを減らすことができることを容易にすることである。
4.コード可読性を追加し、同じ機能を実行するが、異なるパラメータタイプの方法は同じ名前を使用すべきである。
リロード規則:
1.再ロードされる方法はパラメータリストを変更しなければなりません。
2.リロードされる方法は、リターンタイプを変更することができる。
3.再ロードされた方法は、アクセス修飾子を変更することができる。
4.再負荷された方法は、新しいまたはより広い検査異常を宣言することができる。
5.方法は、同じクラスにおいても、または1つのサブクラスにおいても、負荷されることができる。
6.戻り値の種類を重負荷関数として区別することはできません。
曖昧呼び出し:

public class TestMethodOverload {
    public static double max(double num1,double num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static int max(int num1,int num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static void main(String[] args) {
        System.out.println("The max of 3 and 4 is "+max(3,4));
        //  max(int num1,int num2)  
        System.out.println("The max of 3.0 and 4.0 is "+max(3.0,4.0));
        //  max(double num1,double num2)  
        System.out.println("The max of 3 and 4.0 is "+max(3,4.0));
        //  max(double num1,double num2)  ,        3    double 
    } 
}
max(3,4)を呼び出した時、なぜmax(double num 1,double num 2)メソッドを使わないですか?
メソッドを呼び出すと、可能なマッチが一つ以上ある場合があります。Javaコンパイラは最も正確なマッチングの方法を探しています。方法max(intnum 1,intnum 2)は、max(double num 1,double num 2)よりも正確です。
一つの方法を呼び出すと、二つ以上の可能性のあるマッチングがありますが、コンパイラはどれが一番正確なマッチングかを判断できません。これを曖昧呼び出しと呼びます。曖昧呼び出しはコンパイルエラーを発生します。

public class TestMethodOverload {
    public static double max(double num1,int num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static double max(int num1,double num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static void main(String[] args) {
        System.out.println("The max of 3 and 4 is "+max(3,4));
        //         ,    
    } 
}
二、書き換え(Override)
書き換えるということは、親のアクセスを許可するサブクラスの方法の実現過程を再編成し、戻り値も形参も変えられません。
書き換えるメリットは、サブクラスが必要に応じて、自分の行動に特定できることです。つまり、子類は必要に応じて親類の方法を実現できるということです。
書き換え方法は、新たな検査異常や書き換え方法よりも広い異常を明らかにしてはいけません。

class People{
    public void speak(){
        Systom.out.println("    ");
    }
}

class ChinaPeople extends People{
    public void speak(){
        System.out.println("     ");
    }
    public void color(){
        System.out.println("     ");
    }
}

public class Test{
    public static void main(String[] args){
        People a = new People();//People  
    	People b = new ChinaPeople();//ChinaPeople  
    
   		a.speak();//  People    
    	b.speak();//  ChinaPeople    
    	b.color(); 
    }
}
メソッドの書き換え規則:
1.パラメータリストと書き換え方法のパラメータリストは完全に同じでなければなりません。
2.戻りタイプと書き換えられた方法の戻りタイプは異なることができますが、親タイプの戻り値の派生クラスでなければなりません。
3.アクセス権限は親に書き換えられた方法のアクセス権限よりも低くしてはいけません。
4.親のメンバー方法は、その子だけで書き換えられます。
5.finalとして宣言する方法は書き換えられません。
6.staticとして宣言する方法は書き換えられませんが、再度声明することができます。父の名前が使えます。静的な方法は名来で父のクラスのstaticメソッドを呼び出します。
7.子類と親類は同じカバンの中にいます。子類は親類を書き換えることができます。これはprvateとfinalとしての全ての方法です。
8.子類と親類が同じカバンにないと、子類は父類の声明をpublicとprotectedの非final方法に書き換えることができます。
9.書き換えの方法は、強制異常でないものを投げ、書き換えられた方法が異常であるかどうかにかかわらず。しかし、書き換えの方法は、新たな強制異常を抛り出すことができないか、あるいは書き換えられた方法声明よりも、より広範な強制異常を与えることができない。サブクラスで強制的な異常(コンパイル型異常)を打ち出すには、親類からこの異常またはより広い異常を投げ出さなければなりません。
10.構造方法は書き換えられません。
11.クラスを引き継ぐことができないと、そのような方法を書き換えることができません。
superキーワード:
サブクラスで親タイプの書き換え方法を呼び出す必要がある場合は、superキーワードを使用します。

class People{
    public void speak(){
        Systom.out.println("    ");
    }
}

class ChinaPeople extends People{
    public void speak(){
        System.out.println("     ");
    }
}

public class Test{
    public static void main(String[] args){
    	People a = new ChinaPeople();//ChinaPeople  
    
   		super.speak();//  People    
    	b.speak();//  ChinaPeople    
    }
}
三、書き換えと重載の違い
違い点
積載方法
書き換え方法
パラメータリスト
変更が必要です
きっと直せない
タイプを返します
変更できます
きっと直せない
異常
変更できます
減らすことができます。削除することができます。必ず新しいものや、より広い異常を捨ててはいけません。
アクセス
変更できます
もっと厳しい制限をしてはいけません。
四、まとめ
方法の書き換え(Override)と重載(Overload)はjava多形性の異なる表現であり、書き換えは親と子の多形性の表現であり、重載は多形の具体的な表現形式として理解できる。
1.方法のリロードは、同じクラスで複数の方法名が定義されていますが、それらのパラメータの数が異なるかどうかは同じですが、タイプと順序が異なる場合は、方法のリロードと呼ばれます。
2.方法書き換えは、サブクラスでの存在方法が親タイプと同じであり、パラメータの個数がタイプと同じで、戻り値も同じである方法を書き換え(Override)といいます。
3.方法の重なりは多形表現の一種であり、方法の書き換えは子類と父類の多形表現である。
以上、Javaの基礎に関する重載と書き換え(Overload)の詳細な文章をここに紹介します。さらに関連するJavaの重載と書き換えについては、以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。