方法のリロードと方法の書き換えの概念と区別


Javaには2つの重要な概念があり、それぞれ方法のリロードと方法のオーバーライドです.
まずこの2つの概念をそれぞれ紹介してから,それらの違いを統一的に分析する.
1.メソッドのリロード
メソッドのリロードはJava言語の大きな特徴と利点であり、C言語では2つの同名の関数を持つことは許されず、これは私たちに大きな不便をもたらしたが、Javaでは、複数のメソッドをサポートして同名(合法的な要求の下で)することができ、これはユーザー側に大きな便利さをもたらし、1つの名前を呼び出すと複数の異なるパラメータの方法を使用することができる.
次に、メソッドのリロードの例を示します.
public class Exer1 {
    public static void main(String[] args) {
        System.out.println(add(2, 4));
        System.out.println(add(2.0, 4.0));
    }

    public static int add(int x, int y) {
        return x + y;
    }

    public static double add(double x,double y) {
        return x + y;
    }
}

このコードから、方法の再ロードがあって、異なるタイプのパラメータを受け入れることができて、異なるタイプの値を返して、C言語の中で、2つの関数を実現しなければなりません;
メソッドの再ロード定義:
  • メソッド名同じ
  • パラメータの種類、順序または個数が異なる(パラメータリストが異なる)
  • 戻り値タイプに関係なく
  • 2.書き方
    メソッドの上書きはJavaで特に重要です.これは継承と密接な関連がある.Javaではメソッドの上書きは継承関係で必ず発生しますが、同じクラスではメソッドの上書きとは呼ばれず、エラーも発生します.
    次のコードを見てみましょう.
    class Person {
        private String name;
        public void fun() {
            System.out.println("father");
        }
    }
    class Student extends Person {
        private String school;
        public void fun() {
            System.out.println("son");
        }
    }
    
    public class Exer1 {
        public static void main(String[] args) {
            Student stu = new Student();
            stu.fun();
        }
    }
    

    このコードでは、実行の結果、sonはmainメソッドで、誰がnewのこのオブジェクトで、誰のメソッドを呼び出すかを覚えています.メソッドの上書き定義:
  • 親メソッド名、パラメータタイプ、および個数とまったく同じ
  • 上書きメソッドは、親よりも厳格なアクセス制御権限(public>default>private)
  • を持つことはできません.
  • 親メソッドがprivateによって修飾されている場合、このメソッドはメソッド上書きできません(privateは本クラスでのみ表示されますが、子クラスは親がこのようなメソッドを持っていることを全く知りません.上書きできません)
  • .
    メソッドの上書きに加えて、属性の上書きという概念もありますが、実際の意味は大きくありません.属性は一般的にprivateでカプセル化されているので、ここでは詳しく説明しません.
    3.メソッドリロードとメソッド上書きの違い⭐
    前に詳しく紹介しましたが、ここでは直接まとめます.
    区別する
    じゅうか
    上書き
    コンセプト
    メソッド名が同じ、パラメータのタイプと個数が異なる
    メソッド名、戻り値タイプ、パラメータのタイプ、および個数は完全に同じです.
    範囲
    クラス
    関係を継承
    制限
    権限要件なし
    上書き方法では、親よりも厳格なアクセス制御権限を持つことはできません.