steinqiao  
          日歷
          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910
          統(tǒng)計(jì)
          • 隨筆 - 8
          • 文章 - 0
          • 評(píng)論 - 1
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

           

           

           

           

          JAVA SE Lesson 1

           

           

          1. 類(lèi)是一種抽象的概念,對(duì)象是類(lèi)的一種具體表示形式,是具

           

          體的概念。先有類(lèi),然后由類(lèi)來(lái)生成對(duì)象(Object)。對(duì)象又

           

          叫做實(shí)例(Instance)。

           

          2. 類(lèi)由兩大部分構(gòu)成:屬性以及方法。屬性一般用名詞來(lái)表示,

           

          方法一般用動(dòng)詞來(lái)表示。

           

          3. 如果一個(gè) java 源文件中定義了多個(gè)類(lèi),那么這些類(lèi)中最多只

           

          能有一個(gè)類(lèi)是 public 的,換句話說(shuō),定義的多個(gè)類(lèi)可以都不

           

          public 的。

           

          4.  Java 中進(jìn)行方法的參數(shù)傳遞時(shí),無(wú)論傳遞的是原生數(shù)據(jù)類(lèi)

           

          型還是引用類(lèi)型,參數(shù)傳遞方式統(tǒng)一是傳值(pass by value)。

           

          Java 中沒(méi)有傳引用(pass by reference)的概念。

           

          5. 方法重載(Overload)。表示兩個(gè)或多個(gè)方法名字相同,但方

           

          法參數(shù)不同。方法參數(shù)不同有兩層含義:1)參數(shù)個(gè)數(shù)不同。

           

          2)參數(shù)類(lèi)型不同。 注意:方法的返回值對(duì)重載沒(méi)有任何影

           

          響。

           

          6. 構(gòu)造方法重載:只需看參數(shù)即可。如果想在一個(gè)構(gòu)造方法中

           

          調(diào)用另外一個(gè)構(gòu)造方法,那么可以使用 this()的方式調(diào)用,this()

           

          括號(hào)中的參數(shù)表示目標(biāo)構(gòu)造方法的參數(shù)。this()必須要作為構(gòu)

           

          造方法的第一條語(yǔ)句,換句話說(shuō),this()之前不能有任何可執(zhí)

           

          行的代碼。

           

          7. 繼承(Inheritence):Java 是單繼承的,意味著一個(gè)類(lèi)只能從


           

           

           

           

          另一個(gè)類(lèi)繼承(被繼承的類(lèi)叫做父類(lèi)【基類(lèi),base class】,

           

          承的類(lèi)叫做子類(lèi)),Java 中的繼承使用 extends 關(guān)鍵字。

           

          8. 當(dāng)生成子類(lèi)對(duì)象時(shí),Java 默認(rèn)首先調(diào)用父類(lèi)的不帶參數(shù)的構(gòu)造

           

          方法,然后執(zhí)行該構(gòu)造方法,生成父類(lèi)的對(duì)象。接下來(lái),再

           

          去調(diào)用子類(lèi)的構(gòu)造方法,生成子類(lèi)的對(duì)象?!疽肷勺宇?lèi)的

           

          對(duì)象,首先需要生成父類(lèi)的對(duì)象,沒(méi)有父類(lèi)對(duì)象就沒(méi)有子類(lèi)

           

          對(duì)象。比如說(shuō):沒(méi)有父親,就沒(méi)有孩子】。

           

          9. super 關(guān)鍵字:super 表示對(duì)父類(lèi)對(duì)象的引用。

           

          10. 如果子類(lèi)使用 super()顯式調(diào)用父類(lèi)的某個(gè)構(gòu)造方法,那么在

           

          執(zhí)行的時(shí)候就會(huì)尋找與 super()所對(duì)應(yīng)的構(gòu)造方法而不會(huì)再去

           

          尋找父類(lèi)的不帶參數(shù)的構(gòu)造方法。與 this 一樣,super 也必須

           

          要作為構(gòu)造方法的第一條執(zhí)行語(yǔ)句,前面不能有其他可執(zhí)行

           

          語(yǔ)句。

           

          11. 關(guān)于繼承的 3 點(diǎn):

           

          a) 父類(lèi)有的,子類(lèi)也有

           

          b) 父類(lèi)沒(méi)有的,子類(lèi)可以增加

           

          c) 父類(lèi)有的,子類(lèi)可以改變

           

          12. 關(guān)于繼承的注意事項(xiàng)

           

          a) 構(gòu)造方法不能被繼承

           

          b) 方法和屬性可以被繼承

           

          c) 子類(lèi)的構(gòu)造方法隱式地調(diào)用父類(lèi)的不帶參數(shù)的構(gòu)造方法

           

          d) 當(dāng)父類(lèi)沒(méi)有不帶參數(shù)的構(gòu)造方法時(shí),子類(lèi)需要使用 super 來(lái)顯


           

           

           

           

          式地調(diào)用父類(lèi)的構(gòu)造方法,super 指的是對(duì)父類(lèi)的引用

           

          e) super 關(guān)鍵字必須是構(gòu)造方法中的第一行語(yǔ)句。

           

           

          13. 方法重寫(xiě)(Override):又叫做覆寫(xiě),子類(lèi)與父類(lèi)的方法返回

           

          類(lèi)型一樣、方法名稱一樣,參數(shù)一樣,這樣我們說(shuō)子類(lèi)與父

           

          類(lèi)的方法構(gòu)成了重寫(xiě)關(guān)系。

           

          14. 方法重寫(xiě)與方法重載之間的關(guān)系:重載發(fā)生在同一個(gè)類(lèi)內(nèi)部

           

          的兩個(gè)或多個(gè)方法。重寫(xiě)發(fā)生在父類(lèi)與子類(lèi)之間。

           

          15. 當(dāng) 個(gè) 寫(xiě) 關(guān) 時(shí) , 類(lèi) 過(guò)

           

          super.run()形式調(diào)用父類(lèi)的 run()方法,其中 super.run()不必放

           

          在第一行語(yǔ)句,因此此時(shí)父類(lèi)對(duì)象已經(jīng)構(gòu)造完畢,先調(diào)用父

           

          類(lèi)的 run()方法還是先調(diào)用子類(lèi)的 run()方法是根據(jù)程序的邏輯

           

          決定的。

           

          16. 在定義一個(gè)類(lèi)的時(shí)候,如果沒(méi)有顯式指定該類(lèi)的父類(lèi),那么

           

          該類(lèi)就會(huì)繼承于 java.lang.Object 類(lèi)(JDK 提供的一個(gè)類(lèi),Object

           

          類(lèi)是 Java 中所有類(lèi)的直接或間接父類(lèi))。

           

          17. 多態(tài)(Polymorphism):我們說(shuō)子類(lèi)就是父類(lèi)(玫瑰是花,男

           

          人是人),因此多態(tài)的意思就是:父類(lèi)型的引用可以指向子類(lèi)

           

          的對(duì)象。

           

           

           

          Java SE Lesson 2

           

           

           

          1. 多態(tài):父類(lèi)型的引用可以指向子類(lèi)型的對(duì)象。

          2. Parent p = new Child();當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類(lèi)中是否有

          sing()方法,如果沒(méi)有則編譯錯(cuò)誤;如果有,再去調(diào)用子類(lèi)的 sing()方法。

          3. 一共有兩種類(lèi)型的強(qiáng)制類(lèi)型轉(zhuǎn)換:

          a) 向上類(lèi)型轉(zhuǎn)換(upcast):比如說(shuō)將 Cat 類(lèi)型轉(zhuǎn)換為 Animal 類(lèi)型,即將子類(lèi)型

          轉(zhuǎn)換為父類(lèi)型。對(duì)于向上類(lèi)型轉(zhuǎn)換,不需要顯式指定。

          b) 向下類(lèi)型轉(zhuǎn)換(downcast):比如將 Animal 類(lèi)型轉(zhuǎn)換為 Cat 類(lèi)型。即將父類(lèi)型

          轉(zhuǎn)換為子類(lèi)型。對(duì)于向下類(lèi)型轉(zhuǎn)換,必須要顯式指定(必須要使用強(qiáng)制類(lèi)型

          轉(zhuǎn)換)。

          4. 抽象類(lèi)(abstract class):使用了 abstract 關(guān)鍵字所修飾的 類(lèi)叫做抽象類(lèi)。抽

          象類(lèi)無(wú)法實(shí)例化,也就是說(shuō),不能 new 出來(lái)一個(gè)抽象類(lèi)的對(duì)象(實(shí)例)。

          5. 抽象方法(abstract method):使用 abstract 關(guān)鍵字所修飾的方法叫做抽象方

          法。抽象方法需要定義在抽象類(lèi)中。相對(duì)于抽象方法,之前所定義的方法叫

          做具體方法(有聲明,有實(shí)現(xiàn))。

          6. 如果一個(gè)類(lèi)包含了抽象方法,那么這個(gè)類(lèi)一定是抽象類(lèi)。

          7. 如果某個(gè)類(lèi)是抽象類(lèi),那么該類(lèi)可以包含具體方法(有聲明、有實(shí)現(xiàn))。

          8. 如果一個(gè)類(lèi)中包含了抽象方法,那么這個(gè)類(lèi)一定要聲明成 abstract class,也

          就是說(shuō),該類(lèi)一定是抽象類(lèi);反之,如果某個(gè)類(lèi)是抽象類(lèi),那么該類(lèi)既可以

          包含抽象方法,也可以包含具體方法。

          9. 無(wú)論何種情況,只要一個(gè)類(lèi)是抽象類(lèi),那么這個(gè)類(lèi)就無(wú)法實(shí)例化。

          10. 在子類(lèi)繼承父類(lèi)(父類(lèi)是個(gè)抽象類(lèi))的情況下,那么該子類(lèi)必須要實(shí)現(xiàn)父類(lèi)

          中所定義的所有抽象方法;否則,該子類(lèi)需要聲明成一個(gè) abstract class。

          11. 接口(interface):接口的地位等同于 class,接口中的所有方法都是抽象方

          法。在聲明接口中的方法時(shí),可以使用 abstract 關(guān)鍵字,也可以不使用。通

          常情況下,都會(huì)省略掉 abstract 關(guān)鍵字。

          12. 可以將接口看作是特殊的抽象類(lèi)(抽象類(lèi)中可以有具體方法,也可以有抽象

          方法,而接口中只能有抽象方法,不能有具體方法)。

          13. 類(lèi)可以實(shí)現(xiàn)接口。實(shí)現(xiàn)使用關(guān)鍵字 implements 表示,代表了某個(gè)類(lèi)實(shí)現(xiàn)了

          某個(gè)接口。

          14. 一個(gè)類(lèi)實(shí)現(xiàn)了某個(gè)接口,那么該類(lèi)必須要實(shí)現(xiàn)接口中聲明的所有方法。如果

          該類(lèi)是個(gè)抽象類(lèi),那么就無(wú)需實(shí)現(xiàn)接口中的方法了。

          15. Java 是單繼承的,也就是說(shuō)某個(gè)類(lèi)只能有唯一一個(gè)父類(lèi);一個(gè)類(lèi)可以實(shí)現(xiàn)多

          個(gè)接口,多個(gè)接口之間使用逗號(hào)分隔。

          16. 多態(tài):所謂多態(tài),就是父類(lèi)型的引用可以指向子類(lèi)型的對(duì)象,或者接口類(lèi)型

          的引用可以指向?qū)崿F(xiàn)該接口的類(lèi)的實(shí)例。關(guān)于接口與實(shí)現(xiàn)接口的類(lèi)之間的強(qiáng)

          制類(lèi)型轉(zhuǎn)換方式與父類(lèi)和子類(lèi)之間的強(qiáng)制類(lèi)型轉(zhuǎn)換方式完全一樣。

          17. static 關(guān)鍵字:可以用于修飾屬性,也可以用于修飾方法,還可以用于修飾

          類(lèi)(后面的課程講)

          18. static 修飾屬性:無(wú)論一個(gè)類(lèi)生成了多少個(gè)對(duì)象,所有這些對(duì)象共同使用唯

          一一份靜態(tài)的成員變量;一個(gè)對(duì)象對(duì)該靜態(tài)成員變量進(jìn)行了修改,其他對(duì)象

          的該靜態(tài)成員變量的值也會(huì)隨之發(fā)生變化。如果一個(gè)成員變量是 static 的,


           

           

           

          那么我們可以通過(guò)類(lèi)名.成員變量名的方式來(lái)使用它(推薦使用這種方式)。

          19. static 修飾方法:static 修飾的方法叫做靜態(tài)方法。對(duì)于靜態(tài)方法來(lái)說(shuō),可以

          使用類(lèi)名.方法名的方式來(lái)訪問(wèn)。

          20. 靜態(tài)方法只能繼承,不能重寫(xiě)(Override)。

          21. final 關(guān)鍵字:final 可以修飾屬性、方法、類(lèi)。

          22. final 修飾類(lèi):當(dāng)一個(gè)類(lèi)被 final 所修飾時(shí),表示該類(lèi)是一個(gè)終態(tài)類(lèi),即不能被

          繼承。

          23. final 修飾方法:當(dāng)一個(gè)方法被 final 所修飾時(shí),表示該方法是一個(gè)終態(tài)方法,

          即不能被重寫(xiě)(Override)。

          24. final 修飾屬性:當(dāng)一個(gè)屬性被 final 所修飾時(shí),表示該屬性不能被改寫(xiě)。

          25. 當(dāng) final 修飾一個(gè)原生數(shù)據(jù)類(lèi)型時(shí),表示該原生數(shù)據(jù)類(lèi)型的值不能發(fā)生變化

          (比如說(shuō)不能從 10 變?yōu)?/span> 20);如果 final 修飾一個(gè)引用類(lèi)型時(shí),表示該引用

          類(lèi)型不能再指向其他對(duì)象了,但該引用所指向的對(duì)象的內(nèi)容是可以發(fā)生變化

          的。

          26. 對(duì)于 final 類(lèi)型成員變量,一般來(lái)說(shuō)有兩種賦初值方式:

          a) 在聲明 final 類(lèi)型的成員變量時(shí)就賦上初值

          b) 在聲明 final 類(lèi)型的成員變量時(shí)不賦初值,但在類(lèi)的所有構(gòu)造方法中都為其賦

          上初值。

          27. static 代碼塊:靜態(tài)代碼塊。靜態(tài)代碼塊的作用也是完成一些初始化工作。首

          先執(zhí)行靜態(tài)代碼塊,然后執(zhí)行構(gòu)造方法。靜態(tài)代碼塊在類(lèi)被加載的時(shí)候執(zhí)行,

          而構(gòu)造方法是在生成對(duì)象的時(shí)候執(zhí)行;要想調(diào)用某個(gè)類(lèi)來(lái)生成對(duì)象,首先需

          要將類(lèi)加載到 Java 虛擬機(jī)上(JVM),然后由 JVM 加載這個(gè)類(lèi)來(lái)生成對(duì)象。

          28. 類(lèi)的靜態(tài)代碼塊只會(huì)執(zhí)行一次,是在類(lèi)被加載的時(shí)候執(zhí)行的,因?yàn)槊總€(gè)類(lèi)只

          會(huì)被加載一次,所以靜態(tài)代碼塊也只會(huì)被執(zhí)行一次;而構(gòu)造方法則不然,每

          次生成一個(gè)對(duì)象的時(shí)候都會(huì)調(diào)用類(lèi)的構(gòu)造方法,所以 new 一次就會(huì)調(diào)用構(gòu)造

          方法一次。

          29. 如果繼承體系中既有構(gòu)造方法,又有靜態(tài)代碼塊,那么首先執(zhí)行最頂層的類(lèi)

          的靜態(tài)代碼塊,一直執(zhí)行到最底層類(lèi)的靜態(tài)代碼塊,然后再去執(zhí)行最頂層類(lèi)

          的構(gòu)造方法,一直執(zhí)行到最底層類(lèi)的構(gòu)造方法。注意:靜態(tài)代碼塊只會(huì)執(zhí)行

          一次。

          30. 不能在靜態(tài)方法中訪問(wèn)非靜態(tài)成員變量;可以在靜態(tài)方法中訪問(wèn)靜態(tài)的成員

          變量。可以在非靜態(tài)方法中訪問(wèn)靜態(tài)的成員變量。

          31. 總結(jié):靜態(tài)的只能訪問(wèn)靜態(tài)的;非靜態(tài)的可以訪問(wèn)一切。

          32. 不能在靜態(tài)方法中使用 this 關(guān)鍵字。

          posted on 2011-11-22 22:35 斯坦 閱讀(329) 評(píng)論(1)  編輯  收藏
          評(píng)論:
          • # re: javaSE 對(duì)前面面向?qū)ο蠛头椒▍?shù)傳遞的補(bǔ)充  習(xí)近平 Posted @ 2013-10-06 16:06
            在java面向?qū)ο笾腥绾握{(diào)用類(lèi)中無(wú)返回帶參數(shù)的方法  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          Copyright © 斯坦 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 周至县| 舞钢市| 北流市| 镇沅| 阳泉市| 亚东县| 秦皇岛市| 阆中市| 苏尼特左旗| 沈阳市| 灵宝市| 鹤庆县| 临洮县| 汉中市| 察隅县| 芦山县| 湘潭市| 南召县| 朔州市| 望谟县| 开封县| 镶黄旗| 甘洛县| 鄱阳县| 沁源县| 郴州市| 垣曲县| 印江| 乐陵市| 岫岩| 凌云县| 天水市| 阳西县| 达孜县| 阿鲁科尔沁旗| 谢通门县| 灵寿县| 双辽市| 黄浦区| 光山县| 新丰县|