posts - 12,  comments - 0,  trackbacks - 0
            2007年12月23日
          方法調(diào)用的綁定:
          將方法的調(diào)用連到方法本身被稱為“綁定”。當(dāng)綁定發(fā)生在程序運(yùn)行之前時(shí),被稱作“前綁定”。
          后綁定也稱為“動(dòng)態(tài)綁定”或“運(yùn)行時(shí)綁定”,指程序運(yùn)行的時(shí)候,根據(jù)對(duì)象的類型來決定該綁定哪個(gè)方法。如果語言實(shí)現(xiàn)了后綁定,那它就必須要有能在運(yùn)行時(shí)判斷對(duì)象類型,并且調(diào)用其合適方法的機(jī)制。也就是說編譯器還是不知道對(duì)象的類型,但是方法的調(diào)用機(jī)制會(huì)找出,并且調(diào)用正確的方法。
          除了static和final方法(private方法隱含有final的意思),java的所有的方法都采用后綁定。也就是說,通常情況下你不必考慮是不是應(yīng)該采用后綁定--它是自動(dòng)的。 為什么要聲明final方法,上一章指出,這樣可以禁止別人覆寫這個(gè)方法,不過更重要的可能還是要“關(guān)閉”它的動(dòng)態(tài)綁定,或者理確切的說,告訴編譯器這里不需要使用后綁定。
          shape為circle的基類,下面這句就是在“上傳”:
          Shape s = new Circle();
          這里先創(chuàng)建了一個(gè)Circle對(duì)象,接著馬上把它的引用賦給了Shape,看上去這像是一個(gè)錯(cuò)誤(一種類型怎么能賦給另一種);但是由于Circle是由Shape派生出來的,Circle就是一種Shape,因此這種做法是非常正確的。假設(shè)你調(diào)用了一個(gè)基類的方法:s.draw();這里派生類里已經(jīng)覆寫了此方法,那么可能你會(huì)認(rèn)為,這次應(yīng)該總調(diào)用Shape的draw()了吧,因?yàn)楫吘惯@是Shape的引用,但是由于實(shí)現(xiàn)了后綁定(多態(tài)性),實(shí)際上它會(huì)調(diào)用Circle.draw().
          posted @ 2008-01-05 19:18 仰望者 閱讀(221) | 評(píng)論 (0)編輯 收藏
          1、 float f=1.3;
              是不對(duì)的,編譯時(shí)會(huì)出錯(cuò),java認(rèn)為1.3是double型的,所以定義時(shí)應(yīng)寫成:float f=1.3f,或float f= (float)1.3;
          2、 byte b = 3;  b=b*3;
              是不對(duì)的,原因是在*運(yùn)算過程中,java會(huì)做類型的提升,將b提升為int型,所以應(yīng)改為:b=(byte)(b*3);
          3、 while(1),if(1)
              是不對(duì)的,原因是java中布爾型只有true 和false兩個(gè)值,這里與C語言不同,只能用while(true)..
          4、 數(shù)組聲明:int num[3];
              這是不對(duì)的,java中聲明數(shù)組時(shí)不應(yīng)對(duì)空間限定,正確的語法應(yīng)是:
              int[] num = new int[3];
              或
              int[] num;
              num = new int[3];
          5、數(shù)組初始化:int[] num;
                         num {1,3,4,4};
             是不對(duì)的,應(yīng)在定義的時(shí)候初始化。如:int[] num={1,3,4,4};
          6、int[] num3 =new int[]{1,2,3};
             int[] num5 =new int[3]{1,2,3};
             int[] num3 =new int[]{1,2,3};是對(duì)的。
              int[] num5 =new int[3]{1,2,3};是錯(cuò)的。已經(jīng)初始化的數(shù)組,不應(yīng)再列明:[3]
                 


          posted @ 2007-12-23 23:01 仰望者 閱讀(163) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 沈丘县| 积石山| 西安市| 曲靖市| 沂南县| 桂平市| 贞丰县| 凤庆县| 定日县| 通城县| 南阳市| 双牌县| 理塘县| 靖宇县| 托克托县| 环江| 汤阴县| 江达县| 浙江省| 巴中市| 丰镇市| 荆州市| 雷波县| 房产| 和平县| 平泉县| 乌拉特中旗| 布尔津县| 武邑县| 五常市| 吉安县| 鹤山市| 万盛区| 华容县| 简阳市| 治县。| 昭平县| 清流县| 盘锦市| 喀喇| 雷波县|