Javaは対象に向けて書き換えられ、重み付けされ、多状態になります。

2041 ワード

一、書き換え(Override):子類は親類に対してアクセスを許可する方法で、戻り値と形参の書き換えを変えない。
public class Father{
   public void skill(){
      System.out.println("   ");
   }
}
 
public class Son extends Father{
   public void skill(){
      super.skill();//                  ,   super   
      System.out.println("   ");
   }
}
 
public class Test{
   public static void main(String args[]){
      Father a = new Father(); // Father   
      Father b = new Son(); // Son   
 
      a.skill();//    Father     
 
      b.skill();//   Son     
   }
}
ルール:パラメータリストは同じでなければいけません。戻りタイプは親の戻り値の派生タイプであってもいいです。そうでなければ、同じアクセス権限が親より書き換えられた方法にアクセスする権限が低いということはできません。finalとして宣言します。staticの方法は書き換えられません。子類は親類がprvateとfinalを除いて全部の方法を書き換えることができます。別のパッケージの場合、父類声明をpublicとprotectedの非final方法に書き換えるしかないです。書き換え方法よりもっと広い異常構造方法は書き換えられません。もし一つの方法を継承できないなら、この方法を書き換えることはできません。
二重負荷(Overload):一つのクラスでは、方法名は同じですが、パラメータは違います。戻るタイプは同じでもいいですか?
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));
    }
}
ルール:再ロードされる方法パラメータのリストが異なります。したがって、リロード関数の識別基準としての戻り値の種類では再ロードできない方法は、アクセス修飾子をリロードする方法を変更することができ、新しいまたはより広い検査異常方法は、同じクラスにおいても、またはサブクラスにおいても再負荷されることができることを宣言することができる。
三,多状態:多状態は同じ挙動であり、複数の異なる表現形式または形態を持つ能力を持つ。
利点:結合性、柔軟性、インターフェース性、代替性、拡張性、簡略性を除去する。
多形存在の条件:1、継承2、書き換え3、親の引用はサブオブジェクトを指します。
多形の実現方式:1、書き直し2、インターフェース3、抽象的な種類と抽象的な方法