天天看點

了解java的動态綁定 靜态綁定

  1. 在java中所有變量都是靜态綁定
  2. 在Java中方法隻有static和final是靜态綁定,其餘全部是動态綁定

了解靜态綁定:

靜态綁定就是指在編譯時就已經确定是哪個類的對象調用的。

是以當出現一下語句時:

Parent parent=new Parent();
Parent parent=null;

parent.str;
           

這裡的str為Parent中的一個變量成員【即靜态綁定】,說明當parent被定義時,即為Parent類的對象時,就将這條語句确定了

進一步讨論

Parent parent=new Parent();  或者 Parent parent=null;
Child child=new Child();
parent=child;
parent.str
           

這裡的parent.str與先前的語句一樣,因為parent定義時就說Parnet類與之後指向child無關。

動态綁定:

即程式在運作時,才會确定調用的是哪個方法,這個時候就要看你調用的這個對象的指向了。

測試源代碼:

class  Parent{
	public String str="Parent";
	public void prn(){ System.out.println(str);}
	public void prn1(){ System.out.println(str);}	 
}
public class Child extends Parent{
    public String str="Child";
	public void prn1(){ System.out.println(str);}
	public static void main(String[] args) 	{
		Parent parent=new Parent();
        parent.prn1();
		parent.prn();

		System.out.println("------以下展現了動态綁定和靜态綁定--");		
		Child child=new Child();
		child.prn1();
		child.prn();
		System.out.println(child.str);

        System.out.println("----以下展現了多态-----------------");
		parent=child;
		parent.prn1();
		parent.prn();
		System.out.println(parent.str);
		System.out.println();
		Parent parent1=null;
        parent1=child;
        parent1.prn1();
		parent1.prn();		
		System.out.println(parent1.str);		 
	}
}

           

運作結果

了解java的動态綁定 靜态綁定