JAvaでのリロードと書き換え(overriding)

6820 ワード

目次
  • 一:方法の重荷(overloading)
  • 二:メソッドの書き換え(overriding)
  • リロードとリライトはJavaの多態性の異なる表現である:リライトは親クラスと子クラスの間の多態性の表現であり、実行時に作用する(動的多態性、例えば動的バインドを実現する)が、リロードはクラスの中の多態性の表現であり、コンパイル時に作用する(静的多態性、例えば静的バインドを実現する)
    一:メソッドのリロード(overloading)
    メソッドリロードとは、クラスでメソッド名が同じで、パラメータが異なる複数のメソッドを定義することです(戻り値タイプは任意で、戻りタイプをリロード関数の区別基準とすることはできません).
          :
    1.       ;
    2.       ;
    3.      。
    
    public class mine {
      //    
        public mine(){
            System.out.println("  "); 
        }
      //       
        public mine(Object obj){
            System.out.println("  "); 
        }
        //    
      public String info(String str){ 
          System.out.println("1"); 
      }   
      //       
      public String info(String str,int i){ 
          System.out.println("2"); 
      } 
      public String info(int i,String str){ 
          System.out.println("3"); 
      } 
    }
    

    二:方法の書き換え(overriding)
    定義:メソッドの書き換えはメソッドの上書きとも呼ばれ、子クラスでメソッドが親クラスと同じ名前とパラメータを定義すると、メソッドが書き換えられます.
    (1)        ,         private protected           ,            ,         。
    (2)                        、        ,            。
    (3)                  ;
    

    親クラスに存在するメソッドを使用して、superキーを使用します.このキーは、現在のクラスの親を参照します.
    Javaでは変数を継承する値の問題があります.親の静的変数の関連付けは変更され、非静的変数は変更されません.
    継承チェーン内のオブジェクトメソッドの呼び出しには、次のような優先順位があります.
     this.show(Object)>super.show(Object)>this.show((super)Object)>super.show((super)Object)
    
    //A 
    public class A {
        public String show(int o){
            System.out.println("A   o");
        }
    }
    //B 
    public class B extends A {
        public String showA() {
            super.show(int o);
            //   A  o,  B    A    
        }
        public String show(int o) {
            System.out.println("B   o");
        }
    }