java動態及靜態綁定

   今天在老師和同學的幫助下,瞭解了一個比較重要的知識點,可能比較簡單,但是我還是非常想和大家分享下的。

   就是java裏的靜態和動態綁定的問題。

   2句話。今天剛學的

   方法動態綁定到變量上,

   屬性靜態綁定到對象類型上。


   怎麼理解?


   寫段簡單的代碼,讓大家能夠比較好的理解。

   

   定義2個類作測試

   class Foo{

       int a=1;

       public void a(){

           System.out.println(1);    

   }

        public static void b(){

       System.out.println(3);

   }

   }

class Koo extends Foo{

       int a=2;

       public void a(){

           System.out.println(2);    

   }

        public static void b(){

       System.out.println(4);

   }

   }

主函數

public static void main (String[] args){

       Foo foo=new Koo();

       System.out.println(foo.a);

//屬性靜態綁定到對象類型上,foo對象類型是Foo,所以輸出1

       foo.a();

//方法動態綁定到變量上,變量foo指向的是Koo實例對象,所以變量的a方法其實是指Koo的a方法

//所以輸出2;

       foo.b();

//這樣寫是有警告的,因爲b是靜態方法,應該用類名直接調用,但是這樣寫沒錯

//這種題也會被別人出出來刁難你

//靜態方法和屬性是一樣的,靜態綁定到對象類型上

//因爲foo是Foo類型的,所以輸出3;

   }


雖然比較簡單,但是初學者往往會在這種問題上搞混,單單記住上面2句話是沒用的,你要仔細去理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章