多形まとめ

4083 ワード

多形実質:AシステムはBシステムに対して甲というサービスを要求していますが、甲のようなサービスはBにおいて様々な実施形態があり、具体的な詳細はBシステムに実装されています。Aシステムにとっては見られないものです。以下の規則は親の参照変数に適用されます。
//  
public class base{
    String BaseStr="base";
    static String staticBaseStr="staticBase";
    public void method1(){
        System.out.println("Base's method1")
    }
    public static void method2(){
        System.out.println("Base's static method2")
    }
}
//  
public class Sub extends base{
    String SubStr="sub";
    static String staticSubStr="staticSub";
    public void method1(){
        System.out.println("Sub's method1")
    }
    public static void method2(){
        System.out.println("Sub's static method2")
    }
}
public class test{
    public void main(arg s){
        Base base =new Sub();//                

        base.BaseStr="new base";//  
        base.SubStr="new sub";//          1,  3     Base  SubStr;
        ((Sub)base).SubStr="new sub";//  ,     Sub  

        base.staticBaseStr="123";//  
        base.staticSubStr="123";//          1,  3     Base  staticSubStr;
        ((Sub)base).staticSubStr="123"//  ,    

        base.method1();//    2   Sub's method1 
        base.method2();//    3       Base's static method2
    }
}
1、参照型の変数に対して、javaコンパイラはその宣言の種類によって処理します。2、参照型の変数が実行されている場合、java仮想マシンは実際に参照されたオブジェクトに従って3を処理します。実行中の環境では、参照対象の方法と属性に変数を参照してアクセスするとき、java仮想マシンはバインディング機構を採用します。
//·                  ,        ;
//·               (         )     ,    
//·    (         )           (         )       
//·             (    )               ,                     ,