Javaでのメソッドのリロードと書き換えの違い

4744 ワード

リロード(overloading)は「2つの異なる」ルール1に従い、同じクラスに複数の名前の同じメソッド(「2つの同じ」)を持つことができますが、これらのメソッドのパラメータリストはそれぞれ異なります(「1つの異なる」)があります.2)、戻り値タイプ、修飾子は同じでも異なってもよいが、Javaではメソッドの戻り値タイプ、修飾子はメソッドのリロードを区別する根拠として使用できない.3)、構造方法はリロードしても書き換えてもいけない.コンストラクションメソッドのリロードは、メソッドを呼び出すとき(オブジェクトをインスタンス化するとき)に異なる戻り値とパラメータの要件を満たすために使用できます.4)、リロードはクラス内の多様性の表現です.5)、同じクラス内です.
例:
public class OverLoad{
     private String name;
     private int sex;
     //      
     public OverLoad(){
        super();
     }
     //       
     public OverLoad(String name,int sex){
          super();
          this.name=name;
          this.sex=sex;
     }
     //           
     public void print(){
         System.out.println("name="+name+" sex="+sex);
     }
     public void test(){
          System.out.println("      !");
     }
     //  test  
     public void test(String m){
          System.out.println("  test   :" + m);
     }
     public static void main(String[] args){
          OverLoad ol=new OverLoad("  ",20);
          ol.print();
          //            
          //         test  
          ol.test();
          //             test  
          ol.test("Hello");
     }
}

上書き(overridingは上書きとも呼ばれる)は、「2つの同じ2つの小さな1つの大きい」ルール1に従います.サブクラスのメソッドは、親クラスのメソッドの名前とパラメータと完全に同じになります(「2つの同じ」)で、サブクラスによって作成されたインスタンスオブジェクトがこのメソッドを呼び出すと、サブクラスの定義メソッドが呼び出されます.これは、親クラスで定義されている同じ方法を上書きすることに相当します.(親にあるメソッドが必要な場合は、superキーを使用します.このキーは現在のクラスの親を参照しています).これは、オブジェクト向けにプログラミングされた親と子の間の多様性の表現です.2)、子メソッドの戻り値タイプは、親メソッドの戻り値タイプよりも小さく、または等しく、子メソッドが親を上書きするメソッドの場合、親よりも少ない例外、または者は親を投げ出す異常な子義常であり、子は親のいくつかの問題を解決することができるため、親よりも多くの問題を抱えることはできません(「2つの小さい」).3)、子メソッドのアクセス権は親メソッドよりも大きく、小さくすることはできません(「1つの大きい」).親メソッドがprivateタイプの場合、子メソッドには上書きの制限はありません.子クラスに新しいメソッドが追加されたことに相当します.4)、クラスとクラスの間.例:
   public class Car{
       //  Car  run  
       public void run(){
            System.out.println("       ...");
       }
   }
   //     Test ,      Car ,   Car  run  。
   public class Test extends Car{
       //  Car  run  
       public void run(){
           System.out.println("        ...");
           //     run  
           //super.run()
       }
       public static void main(String[] args){
           //  Test  
           Test t=new Test();
           t.run();
       }
   }