版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、老老師簡老,82 年生于山西,02 工程師實(shí)訓(xùn)老老師簡老,82 年生于山西,02 工程師實(shí)訓(xùn)課身教育至今。至 09 年 12 月?lián)碛衅吣旯ぷ鹘?jīng)驗(yàn),四教育經(jīng)驗(yàn)趣廣泛,近期一直學(xué)習(xí)經(jīng)濟(jì)學(xué)與心理學(xué)老師課程特點(diǎn):通俗易懂,風(fēng)趣幽默面一直有逛書店,到j(luò)ava 柜臺(tái)總會(huì)停下來基礎(chǔ)書籍向?qū)W,但可惜十分滿意的基本沒有。于是有了下現(xiàn)在市面上的有兩種一種是一直有逛書店,到j(luò)ava 柜臺(tái)總會(huì)停下來基礎(chǔ)書籍向?qū)W,但可惜十分滿意的基本沒有。于是有了下現(xiàn)在市面上的有兩種一種是學(xué)院派老師編寫的,他們是主流,你看到十本java書,有九本半是這樣的。他們的作者擁有讓人敬仰的稱謂,如某某教是讀著這樣的書學(xué)java 的。但現(xiàn)在看來
2、,這樣的書并不適合入門節(jié)大都是這樣的,懷著莫大的熱情準(zhǔn)備開始學(xué)習(xí)java,買了城市:陜西,西久仰的java 編程寶典(有無此書,無從得之,杜撰的名),它很厚很重很專業(yè),你用毅力恒心支持看了幾十頁,才相信java 的確是難學(xué),后來,就不怎么看它了。直到過了很多天,也許你已從事java方面的開發(fā)工作,一天,從書堆里無意的見到它,拍拍灰塵看看,夠厚,就作為工具書備用吧技電子郵個(gè):還有一種是這樣草根階層(好聽點(diǎn)叫實(shí)戰(zhàn)派)編寫的的書鳳毛麟角,因?yàn)榇蠹叶荚诿τ诠ぷ鬟@樣打了雞簡單,學(xué)習(xí)IT 類散文來閱讀它。OK,如果你初學(xué)java,需要的就是一本這樣的書 地址老師的目標(biāo)人群是:初學(xué)java 的讀者歡學(xué)還有如
3、果您已認(rèn)真完善的學(xué)習(xí)過java,或已從事java 方面的開發(fā)作,那本書的部分章節(jié)一些幽默風(fēng)趣的案例您帶來一些驚喜,一些實(shí)用技術(shù)的深入講解能給您帶來些許收獲所以老師的理想目標(biāo)是: 讓新手當(dāng)技術(shù)類籍來學(xué)習(xí)它,讓老手當(dāng)消遣類散文來閱讀它。想讓所有人,中成長,中工作。學(xué)習(xí)java 可以是件很輕松的情,讓所謂高深的技術(shù)平民化,讓所謂復(fù)雜的技術(shù)簡單化,這斗目標(biāo),也會(huì)一直為此努奮本章內(nèi)容分為七部分,如下圖所示6.1編程語言的分類老師以前的理想是學(xué)習(xí)漢語言文學(xué),將來的首選職本章內(nèi)容分為七部分,如下圖所示6.1編程語言的分類老師以前的理想是學(xué)習(xí)漢語言文學(xué),將來的首選職業(yè)是作家,其次作家當(dāng)不了某報(bào)社做個(gè)也可以,再
4、其次編干不了那就湊合做個(gè)業(yè)余的網(wǎng)絡(luò)寫吧(比如現(xiàn)在黨),最后實(shí)那就去做印刷工人,最最后印刷工人也干不了我騎著自行車每天送報(bào)紙,反正想的就是要與文字相關(guān)的工作?,F(xiàn)狀應(yīng)聘印刷工人沒成功,個(gè)偶然的機(jī)會(huì)做了程序員。到這里大家也應(yīng)該明白,程序員(編碼工人)的社會(huì)地位僅在刷工人之下,送報(bào)工人之上在這里絕對(duì)沒有貶低送報(bào)師傅的意思,其實(shí)我也挺想做送報(bào)工人的,比如每上下班回家,可以向老婆孩子發(fā)發(fā)感慨吹噓吹噓今天終究沒有追上那輛寶馬,只望著它絕塵而去,不是因?yàn)檐噭?dòng)力不夠,而是鏈子掉了雖然沒學(xué)習(xí)漢語言文學(xué),沒成作家,也沒做編輯,只是個(gè)小小的程序員。但作家編也用語言嗎?作家編輯用語言寫文章混飯吃,程序要用語言寫程序混飯
5、吃,大家出來混飯的工具都是語言,看也算變相實(shí)現(xiàn)了原來的理想以上兩段,邏輯有些混蛋,筆調(diào)有。到這里,大家一定驚奇,這怎么可能出旺老師這么斯文的人之口,哈哈,幻覺,那一定是幻覺。還有如果將來能,編頁面 3大人絕對(duì)要把些給去掉的,那就先在免費(fèi)中留著吧!(希望編輯也手下留情,自寫的東西就像自己的親兒子,舍不得啊現(xiàn)實(shí)生活中使用大人絕對(duì)要把些給去掉的,那就先在免費(fèi)中留著吧?。ㄏM庉嬕彩窒铝羟?,自寫的東西就像自己的親兒子,舍不得啊現(xiàn)實(shí)生活中使用的語言有漢語,英語,法語,日語等。這些語言根據(jù)不同的角度是分類的。比說法語是世界上最美的語言,日語是亞種最美的語言,因?yàn)榉ㄕZ日語發(fā)比較平滑圓潤,從音律上講聽起來比較
6、舒服。那漢語呢講究字正腔圓,揚(yáng)頓挫;并且還有聲調(diào),一些國際友人都學(xué)習(xí)漢語,都被聲困擾。這里就把語言分為兩類:平滑的語言,抑揚(yáng)頓挫的語言計(jì)算機(jī)編程語言也是一樣,有兩個(gè)重要的分類是:面向過程的編程語言與程語言面向過程的編程語言:典型代表是C,在C 中,程序由一個(gè)過程(又稱函數(shù),方法)成,程序由main 過程開始執(zhí)行,main 過程又可以調(diào)用別的過程。當(dāng)然很多個(gè)過程也可以中在一個(gè)點(diǎn)h 的頭文件中需要的時(shí)候?qū)腩^文件,類似于java 中的導(dǎo)入包面象的編程語言:它是現(xiàn)在的主流,比如 C+,Java,C#。在象的語言中事萬物皆對(duì)象(類),關(guān)前期已經(jīng)學(xué)習(xí)過,但不是有了類就可以稱為面對(duì)象的編程語言了,它還必須
7、滿足象的三個(gè)基本特征,即:封裝,繼承,多態(tài)。比有門語言 JavaScript,雖然也有類與對(duì)象的概念,但并沒有完全滿足象的個(gè)特把它叫基于對(duì)象的語言。到這里,大家也明白判斷一門語言是或否為面對(duì)象的標(biāo)準(zhǔn):即是否支持封裝,繼承與多態(tài)。下就分別學(xué)習(xí)這三個(gè)特征,今天先學(xué)繼承面象的語言標(biāo)準(zhǔn):是否支持封裝,繼承與6.2繼承的定義與實(shí)現(xiàn)6.2.1 繼承定義在象語言中,繼承一詞來源自生活,了生活。先看定義:定義一個(gè)新類叫繼承,原有的類叫父類,新生成的類叫子類。這個(gè)容易理解,你生了個(gè)孩不管兒子還是女兒都是繼承,那你就是父類,你孩子就是子類頁面 4把象編程叫OOP,還有一門知識(shí)叫OOAD(象的分析與設(shè)計(jì)),在中,繼
8、承又叫派生,父類又叫超類(關(guān)于OOAD,第三季課程中會(huì)講解,現(xiàn)在你只把象編程叫OOP,還有一門知識(shí)叫OOAD(象的分析與設(shè)計(jì)),在中,繼承又叫派生,父類又叫超類(關(guān)于OOAD,第三季課程中會(huì)講解,現(xiàn)在你只要知道別說派生超類是什么意思就可但是在現(xiàn)實(shí)中孩子可能有兩個(gè)父類,如父親和母親,就是說一個(gè)類繼承自多個(gè)類多繼承,比如C+就是這樣的。但Java 中只有單繼承,也就是說,在 Java 中一個(gè)類只能承自一個(gè)父類。這里大家也不要認(rèn)為C+中有多繼承就多么了不起,就好像現(xiàn)實(shí)中如果某人有兩個(gè)父親也不一定是什么愉快的事情,多繼承帶來的麻煩并不比它帶來的方便少,因它使類的體系結(jié)構(gòu)變,這也稱C+為最不純粹象語言的
9、一個(gè)原因。(很多資料上說C+是最不純粹象語言,其中一個(gè)原因就是因?yàn)镃+萬惡的多繼承還有一個(gè)重要原因是因?yàn)镃+中保留了指針,指針的保留提高了C+運(yùn)行速度效率,但也加了程序的復(fù)雜性,學(xué)習(xí)難度。Java 雖然不允許一個(gè)子類有多個(gè)父類,但允許一個(gè)父類有多個(gè)子類。通俗的說就是為父類的你可以有多個(gè)孩子。這個(gè)于C+是一樣的還說父子類的關(guān)系是相對(duì)的,比如說你對(duì)于你老爸是子類,但對(duì)于類了。還爸叫做你的直接父類,叫做你的間接父類兒子叫做你的直接類,你孫子叫做你的間接子類像上兒子的繼承關(guān)系是比較明確的,還有很多抽象的繼承關(guān)系,比說是動(dòng)物,獅子也是動(dòng)物,那類與獅子類繼承之動(dòng)物類;學(xué)生是人,老師也是人,那生類與老師類又
10、繼承之人類;小轎車是汽車,大貨車也是汽車,小轎車類大貨車類繼承之車類。大家看到繼承關(guān)系是通過“子類是父類”確認(rèn)的6.2.2 繼承實(shí)現(xiàn)在Java 中,繼承由extends 關(guān)鍵字實(shí)現(xiàn)看個(gè)例子頁面 5package演示繼承子老*publicclassSonextendsFather/在Java中,繼承由extends關(guān)鍵字有了父再看子類大家看到了,繼承很簡單,現(xiàn)在Son 類就繼承Father 類6.3繼承特點(diǎn)繼承的特點(diǎn)是個(gè)重點(diǎn),也是難點(diǎn)代碼中使有了父再看子類大家看到了,繼承很簡單,現(xiàn)在Son 類就繼承Father 類6.3繼承特點(diǎn)繼承的特點(diǎn)是個(gè)重點(diǎn),也是難點(diǎn)代碼中使用較多的,因?yàn)楝F(xiàn)在大家所學(xué)識(shí)有限
11、老師不能多的放在項(xiàng)目代碼中講解,在這里只能盡量使用通俗易懂的案例給家說明,同時(shí)要求大家要把所有概念性的東西背誦,然后期項(xiàng)目代碼中使用了這里識(shí)再反復(fù)強(qiáng)調(diào),加。繼承的特點(diǎn)老師一共總結(jié)了四點(diǎn),前三點(diǎn)比較簡單;第四點(diǎn)中又引申出三小較難理看子類擁有父類的屬性和方子類可以有自己新的屬性和子類可以重寫(覆蓋)父類的方可父類,創(chuàng)建的什么類型,就只能調(diào)用本類型的屬性和方創(chuàng)建的什么類型,運(yùn)行什么類型的創(chuàng)建的什么類型,就可以強(qiáng)轉(zhuǎn)為什么類6.3.1 特點(diǎn)一: 子類擁有父類屬性和方法現(xiàn)實(shí)生有一句俗語叫做“有個(gè)好腦子,看這句話思,無非就是說兒子可以繼的房子車子票子等等東東,也就是說,兒子可以擁有父留給他的東東已經(jīng)知道類是
12、相同屬性和行為的對(duì)象的集合,那在父類中只有屬性和法了,所以說“子類擁有父類的屬性和方頁面 6package演示繼老*publicclassFather先看一個(gè)類Father 的代碼,比如父親有name 屬性,在解放前,父親得先看一個(gè)類Father 的代碼,比如父親有name 屬性,在解放前,父親得有個(gè)吃飯的生,每天如駱一樣拉個(gè)面板車,所以這里他有一個(gè)diver 的方法子類的代碼與上例中沒有任何變化,只是繼承之父類,沒有屬性也沒方法下面是測(cè)試運(yùn)行類程序運(yùn)行結(jié)果頁面 7調(diào)用父package運(yùn)行老*publicclassTestExtendsRunpublic sicvoidmain(Stringa
13、rgs) lige = new Son(); = 犀利哥;ln(大家好,我叫); package演示繼老*publicclassFather String name;voiddriver()ln(調(diào)用父方法,拉平板車大家看到,雖然子類中并沒有定義name 屬性與driver 方法,但依然可以調(diào)用,說類大家看到,雖然子類中并沒有定義name 屬性與driver 方法,但依然可以調(diào)用,說類繼承了父類的屬性和方法。但也不是說子類可以繼承父類所有的屬性和方法,比private 修飾的就絕,關(guān)于private 修飾符,下章講解封裝時(shí)再詳細(xì)說明,現(xiàn)在大做練習(xí)只要把子類與父類放在一個(gè)包中就可以了通過特點(diǎn)一也
14、可以反推出使用繼承的情況:當(dāng)兩個(gè)類有多個(gè)相同的屬性方法時(shí)抽取父類。比的系統(tǒng)中有兩個(gè)類老師與學(xué)生,他們都擁的屬性如下所示沒有繼承前的學(xué)生類沒有繼承前的老師類上面的代碼大家發(fā)現(xiàn)老師類與學(xué)生類都定義了相同的屬性name 與age,也就是存在碼冗余可以定義一個(gè)父類“人”,讓其擁有name 與age 屬性,這樣只要讓老師與頁面 8package演示繼承在什么情況下使老*/沒有繼承前的老師publicclassTeacher/擁有相同屬Stringname; String age;/擁有特有的老屬/*其它特有屬性方法package演示繼承在什么情況下使老*/沒有繼承前的學(xué)生publicclassStude
15、nt/擁有相同屬Stringname; String age;/*其它特有屬性方法生繼承之人類,根據(jù)特點(diǎn)一子類擁有父類屬性和方法,兩生繼承之人類,根據(jù)特點(diǎn)一子類擁有父類屬性和方法,兩個(gè)子類也就有name 與age 屬性了通過這個(gè)案例也可以看出繼承的一個(gè)優(yōu)點(diǎn):減少代碼冗余,實(shí)現(xiàn)代碼復(fù)用重構(gòu)抽取父,抽取子類Student 與Teacher 都有的屬性重構(gòu)后的學(xué)生重構(gòu)后的老師頁面 9package繼承后的老老*publicclassTeacherNew/擁有特有的老屬package繼承后的學(xué)老*publicclassStudentNewpackage演示繼承在什么情況下使用,抽取出老*publicS
16、tring name; String age;當(dāng)然這樣的情況應(yīng)不僅僅局限于屬性,當(dāng)兩個(gè)子類有相當(dāng)然這樣的情況應(yīng)不僅僅局限于屬性,當(dāng)兩個(gè)子類有相同的方法時(shí),也可以抽取父把相同的方法代碼抽取到父類。也就是說:當(dāng)兩個(gè)或多個(gè)類中有相同的屬性或方時(shí)可以為它們提取一個(gè)父類,把相同的屬性方法代碼抽取到父類中,并讓所有子類繼承那個(gè)取的父6.3.2 特點(diǎn)二: 子類可以有自己新的屬性和方法接著上面的父子類案例,當(dāng)然時(shí)代在進(jìn)步,社會(huì)在發(fā)展,兒子長大后 IT 業(yè)興起學(xué)會(huì)了上網(wǎng),兒子還有了自己的網(wǎng)絡(luò)昵稱,則子類變化下面看運(yùn)行類頁面 10package運(yùn)行老*publicclassTestExtendsRunpublic
17、 sicvoidmain(Stringargs) lige = new Son(); = 犀利哥;ln(大家好,我叫); xilige.lineName = 寂寞犀利哥;package演示繼承子老*publicclassSonextendsFather/ 特點(diǎn)二:子類可以有自己新的屬性和/ 子類新的屬性網(wǎng)publicString/ 子類新的方法public( ln(我是子類定義的方法,我運(yùn)行結(jié)根據(jù)有繼承第二個(gè)特點(diǎn):子類可以擁有自己新的屬點(diǎn)雖然比較簡單,但可以引出下面復(fù)運(yùn)行結(jié)根據(jù)有繼承第二個(gè)特點(diǎn):子類可以擁有自己新的屬點(diǎn)雖然比較簡單,但可以引出下面復(fù)雜的特點(diǎn)三6.3.3 特點(diǎn)類可以覆蓋父類的方法
18、( 方法重寫, 方法覆蓋比如兒子混的不錯(cuò),賺了很多錢,每次兒子出去開著老爸留給自己的平板車肯定不那好的解決方法嗎?這里也可以,因?yàn)樽宇惪梢灾貙懀ǜ采w)父類的方法引一個(gè)方法重寫或者叫方法覆蓋的概方法覆蓋(方法重寫):子類方法與父類方法具有相同的方(方法頭),不實(shí)現(xiàn)(方法體)。方法覆蓋是相對(duì)于父子類而言的,一個(gè)類無法實(shí)現(xiàn)覆蓋。(如果忘記與方法實(shí)現(xiàn)的知識(shí),建議回到類與對(duì)象那章復(fù)習(xí)還是上例,父類不變,則子類變化頁面 11調(diào)用父網(wǎng)名是寂寞犀利哥ln(大家好網(wǎng)名是xilige. package class Sonextends FatherString() void driver()package cla
19、ss Sonextends FatherString() void driver()運(yùn)行類package publicclass TestExtends2Runpublic icvoidmain(Stringargs)Son son =new 頁面 12程序運(yùn)行結(jié)果通過可以看到,driver()并沒有調(diào)用父類的拉平板車,而是開個(gè)BMW。也就是說,子類重寫父類方法,創(chuàng)建程序運(yùn)行結(jié)果通過可以看到,driver()并沒有調(diào)用父類的拉平板車,而是開個(gè)BMW。也就是說,子類重寫父類方法,創(chuàng)建子類,調(diào)用的是子類的方法關(guān)鍵字假在開發(fā)程序時(shí)如一把子類的driver 方法寫錯(cuò),比如多個(gè)字母或少個(gè)母,如寫作dri
20、iver(),由于大家的疏忽并沒看到,這時(shí)根據(jù)子類可以擁有新的屬性法,源文件依然能編譯通過,只有當(dāng)子類對(duì)象調(diào)用driver()方法時(shí),程序打印的依然是類的拉平板車才會(huì)發(fā)現(xiàn),當(dāng)然這樣的疏忽通過您的細(xì)心是可以發(fā)現(xiàn)的。其實(shí)還有另種方法,那就是利用JAVA 提供注解的OverrideOverride 用在子類方的前面,表示此方法是重寫的父類方法,當(dāng)方足時(shí),在Java 源文件編譯為類文件時(shí)就會(huì)報(bào)錯(cuò)。也就是在編譯階段就能發(fā)現(xiàn)這樣錯(cuò)誤。如下所package publicclass Sonextends Fatherpublicvoid driver()頁面 13知道 java 中的注釋有三種,單行多行與文檔
21、,要么是讓過了若干天當(dāng)時(shí)寫的程序,要么是方便別人理解你寫的程序,這些注釋都是給程序員看的,或者讓人的;這里你可以把注解理解為一種特殊的知道 java 中的注釋有三種,單行多行與文檔,要么是讓過了若干天當(dāng)時(shí)寫的程序,要么是方便別人理解你寫的程序,這些注釋都是給程序員看的,或者讓人的;這里你可以把注解理解為一種特殊的注釋,他不但可以讓人看,更重要的是讓機(jī)器java 編譯器看,這樣可以在編譯階段及時(shí)發(fā)的錯(cuò)誤,這樣理解有些偏差,但為了便,大家暫時(shí)先這。還有注解是從 JDK1.5 開始引入的非常強(qiáng)大的流的開發(fā)框架技術(shù)已經(jīng)大量使用后面會(huì)有一章詳細(xì)的講6.3.4 特點(diǎn)四: 可以現(xiàn)父類, 創(chuàng)建子類( 父類能出
22、現(xiàn)的地方, 子類一定能出首先簡單回顧與創(chuàng)建對(duì)象學(xué)生類Student,那Student zhangsan;對(duì)象,zhangsan =new Student();為創(chuàng)建對(duì)象還可以與創(chuàng)建代碼入一行:StudentlisinewStudent單純從語法上父類,創(chuàng)建子類,上面特點(diǎn)一到三的案例可以寫為laoliunewSon();但這樣這樣理解起來肯,下面看一個(gè)案例假如您父親是一個(gè)文藝工作者,有一技之長是會(huì)跳舞,會(huì)跳一種難度非常高的舞“戈”(不知道大家是否還記得以前一個(gè)非??蓯鄣睦咸c演的那個(gè)跳探戈的小品),那有如下父類package publicclass Fatherpublicvoid tange(
23、)假一天要舉辦一個(gè)活動(dòng),要表,邀請(qǐng)你爸去跳舞,它的代碼如下頁面 14package *publicclass Huodong* 表* parampublicvoidpackage *publicclass Huodong* 表* parampublicvoid biaoyanjiemu(Fatherfather)但這時(shí)你父親生病了叫到床前說,“兒啊,有人請(qǐng)你爸我跳舞,我現(xiàn)在病了了,根老師講的子類擁有父類的屬性和方法,你也會(huì)跳舞,怎么樣,你就代父出吧!”,子類代碼如下所示packagepublicclassSonextendsFatherpublicvoid 運(yùn)行類代碼如下所示頁面 15pack
24、age class Testsicvoidmain(Stringargs)Fatherfather;fathernew Son();Huodonghuodong=new package class Testsicvoidmain(Stringargs)Fatherfather;fathernew Son();Huodonghuodong=new 那這個(gè)例子中人家給你父親發(fā)的請(qǐng)?zhí)簿褪堑氖歉割?,但最后是你去你的就是?chuàng)建的運(yùn)行的子類。根據(jù)這也可以從另一個(gè)角度說“父類能出現(xiàn)的地方,子類定能出現(xiàn)”。父類,創(chuàng)建子類這個(gè)特點(diǎn)又可以引申出下面三特點(diǎn)四點(diǎn)一的什么類型就只能調(diào)用本類型的屬性和方法你去參加舞會(huì)了
25、,并且是以你老爸去的,那你就你爸的樣子,比如親不會(huì)喝酒,沒有喝酒的方法,但子類你又,那這時(shí)你也不能喝酒,也就是說只能調(diào)用父的方法,而不能調(diào)用子類特有的方法,所說的什么類型就只能調(diào)用本類的屬性和方法頁面 16package publicclass Testpublic icvoidmain(Stringargs)Fatherfather;package publicclass Testpublic icvoidmain(Stringargs)Fatherfather;fathernew Son();特點(diǎn)四點(diǎn)二建的什么類型真正運(yùn)行的什么類型的方法上面講了方法重寫,知道子類可以重寫父類的方法。這里別
26、人只知道你爸會(huì)跳但如何跳跳幾步他們不知道,這是你就可以重寫父類的方法了,比如父類跳兩步,你完全以調(diào)三步,類代碼如頁面 17package publicclass Sonextends Fatherpublicvoid zhuifengjie()publicvoidhejiu()package publicclass Sonextends Fatherpublicvoid zhuifengjie()publicvoidhejiu()publicvoid tange()運(yùn)行結(jié)大家看到,并沒有調(diào)用父類的跳舞方法,而是調(diào)用的子類重寫的方法,所說:建的什么類型,就真正運(yùn)行的什么類的方特點(diǎn)四點(diǎn)三建的什么類
27、型可以強(qiáng)轉(zhuǎn)為什么類型在舞會(huì)上,你看到了一個(gè)美貌如花,讓你怦然心,你按捺不住,要向白,這時(shí)你是以你老來的,如果這樣上去的話肯定會(huì)罵,這時(shí)怎辦?你可以亮出你的,說其實(shí)我是代父出征,這樣強(qiáng)制類型轉(zhuǎn)換為子類后,就可頁面 18調(diào)用子的方法了,所說,創(chuàng)建的什么類型,就可以強(qiáng)制類型轉(zhuǎn)換為什么型package class Test調(diào)用子的方法了,所說,創(chuàng)建的什么類型,就可以強(qiáng)制類型轉(zhuǎn)換為什么型package class Testsicvoidmain(Stringargs)Fatherfather;fathernew Son();Huodonghuodong=new Sonson = 上面四大點(diǎn),七小點(diǎn),希望
28、大家記老師的案例,雖然不怎么高雅,但的確很用,關(guān)于具體的熟練應(yīng)用,后面在代碼中大家再體會(huì),這里請(qǐng)您先記住這些特點(diǎn)6.4 THIS 與 SUPER 關(guān)鍵字在類中還經(jīng)常出現(xiàn)兩個(gè)關(guān)鍵字this 與現(xiàn)在學(xué)習(xí)。比如您爸是個(gè)煤窯主那您就是富二代。您家有一個(gè)大大的車庫,里的都是,吉利這樣的豪車頁面 19等,開玩笑,也是夢(mèng)想,希望中國汽車早世界。好的,放的都是像路虎蘭博基尼法利這樣的豪車,這些車有些是您爸留等,開玩笑,也是夢(mèng)想,希望中國汽車早世界。好的,放的都是像路虎蘭博基尼法利這樣的豪車,這些車有些是您爸留給您的,有些是自己買的。一天你帶著一個(gè)女如到您家車庫轉(zhuǎn)了一圈見輛車就問,這是你爸留給你的還是自己買的,
29、回答了幾后感覺有些煩,怎么辦呢?您在每輛車前插了個(gè)小旗, this 與super,然后對(duì)她就買的,super 是老爸留。大家看到,其實(shí)this 與super 很簡單,this 表示調(diào)用自的屬性和方表示調(diào)用父的屬性和方法。還是上例,比如兒子開了BMW 之后總不忘父親當(dāng)初生活艱辛,所以在有定義了一個(gè)憶苦思甜的方法,先拉下父親的平板車,再開下自己別,如果沒有per 關(guān)鍵字則很難分辨,現(xiàn)在則有package publicclass Sonextends Fatherpublicvoid driver()publicvoid ykst()當(dāng)調(diào)用子類對(duì)象的 ykst()方法時(shí),首先通過 super.dri
30、ver()調(diào)用父類拉平板車方法,再通過 this.driver()調(diào)用自己開的方法。如果沒有使用 this 和 super 關(guān)頁面 20字,則系統(tǒng)默認(rèn)會(huì)全部調(diào)用子類方法,這里程序的運(yùn)行結(jié)果就不在給出,大家自己試6.5字,則系統(tǒng)默認(rèn)會(huì)全部調(diào)用子類方法,這里程序的運(yùn)行結(jié)果就不在給出,大家自己試6.5 繼承中的構(gòu)造方法繼承中的構(gòu)造方法剛開始學(xué)習(xí)理解比較吃老師給大家總結(jié)了以下幾創(chuàng)建對(duì)象一定會(huì)調(diào)用構(gòu)造方創(chuàng)建子類對(duì)象一定會(huì)調(diào)用父類的構(gòu)造方子類默認(rèn)調(diào)用父類無參構(gòu)造子類只能調(diào)用父類存在的構(gòu)造方子類構(gòu)造方法中使用super 調(diào)用父類構(gòu)造方法,并且super 必須放在第一構(gòu)造方法中this 表示調(diào)用本類其他構(gòu)造方
31、法,并且this 必須放在第一看父類package publicclass Fatherpublic String則子類package publicclass Sonextends Fatherpublic String頁面 21假如子類不變修改父package publicclass FatherStringFather(Stringname)this.假如子類不變修改父package publicclass FatherStringFather(Stringname)= 則子類報(bào)編譯錯(cuò)誤,因?yàn)樽宇惤?jīng)編譯后實(shí)際如下package publicclass Sonextends Fatherpu
32、blic Son()String 當(dāng)使用super()調(diào)用父類構(gòu)造方法時(shí),父類只有一個(gè)帶參數(shù)的,根據(jù)子類只能調(diào)用存在的構(gòu)造方法,所以報(bào)編譯錯(cuò)誤。這時(shí),你只要給父類添加一個(gè)無參構(gòu)造函數(shù)就可以了頁面 22還要記住,如果顯式使用super 關(guān)鍵字,那么他必須放在構(gòu)造方法的第一行。如下package 還要記住,如果顯式使用super 關(guān)鍵字,那么他必須放在構(gòu)造方法的第一行。如下package class Sonextends FatherSon()Son(Stringname,StringlineName)this.lineName= 最后還有一點(diǎn),構(gòu)造方法中使用this 關(guān)鍵字表示調(diào)用本類其他構(gòu)造方
33、法,并且this 必須放在構(gòu)造方法的第一行,如下所示頁面 23package publicclass StudentString String public Student()id,Stringage,Stringpackage publicclass StudentString String public Student()id,Stringage,Stringaddress)this(name,age,address);this.id= Student(Stringage,Stringaddress)= this.age= this.address= 關(guān)于繼承中的構(gòu)造方法,大家理解起來可能
34、比較吃力,感覺就一個(gè)“暈記住上面的特點(diǎn),以后再反復(fù)體會(huì)。同時(shí),SUN 建議您給每個(gè)類添加一個(gè)無參的顯式構(gòu)造法,這樣可以避免很多錯(cuò)誤頁面 246.6 第六部分: 老OBJECT 知道JAVA象的語言,JAVA 中有一個(gè)特殊的類,它的名字就叫6.6 第六部分: 老OBJECT 知道JAVA象的語言,JAVA 中有一個(gè)特殊的類,它的名字就叫Object(象),就好像現(xiàn)實(shí)生活的名字叫人一樣,雖然有些奇怪,但它的確存在。并且類在java.lang 包中,也就是說Object 類可以直接使用而不需要導(dǎo)入JAVA 規(guī)定,如果某個(gè)類沒有父類,那它就默認(rèn)的繼承自O(shè)bject 類,也就是是java 體系所有類的直
35、接或間接父類。根據(jù)子類可以擁有父類的屬性和方法,所以java 類擁有可以從Object 繼承的屬性和方法。這樣,當(dāng)SUN 要給java 添加新功能時(shí)要修改Object 類就可以了,這也體現(xiàn)了繼承的一個(gè)優(yōu)點(diǎn)接下看看Object 類中一些重要的到目前為能理解的方法public String toString():這個(gè)方前期使用過,那大家現(xiàn)在知道是重寫Object 的方法。它還特殊的地方是當(dāng)打印對(duì)象時(shí)只寫對(duì)象名不寫方法名,默認(rèn)調(diào)用法。如下所示頁面 25package class StudentString public id,Stringage)= this.age= this.package cl
36、ass StudentString public id,Stringage)= this.age= this.id= StringtoString()return id=+id+name=+ age= + sicvoidmain(Stringargs)Studentstudent=new , 頁面 26protected void finalize() throws Throwable:類似C+的析構(gòu)方法,在對(duì)象消時(shí)由系統(tǒng)自動(dòng)調(diào)用(參老師構(gòu)造方法與“析構(gòu)方法)equals(Object obj):比protected void finalize() throws Throwable:類似C+的
37、析構(gòu)方法,在對(duì)象消時(shí)由系統(tǒng)自動(dòng)調(diào)用(參老師構(gòu)造方法與“析構(gòu)方法)equals(Object obj):比較兩個(gè)對(duì)象的數(shù)值(堆空的對(duì)數(shù)值)是否一致,一般也由子類覆蓋,比使用的String 的equals 方法就是覆它。為了說明這個(gè)方法,看下例,還是上面的Student 類看兩個(gè)對(duì)象的比較packagepublicclassTestEqualspublicmain(String=new,=new,看結(jié)構(gòu)并不是期望的true,而是flase,這時(shí)因?yàn)槟J(rèn)的調(diào)用父類Object 的equalse 方法,這須重寫父類的equalse 方法,如下頁面 27package class StudentStri
38、ng public id,String= this.age= this.id= package class StudentString public id,String= this.age= this.id= equals(Objectobj)(this=return (obj=return Studentother=(Student)(age!=return (id!= return (name=null)if (!=return else ifreturn return 頁面 28/老師這樣再運(yùn)行上面的比較程序就返回true 了,當(dāng)然其實(shí)這時(shí)最好重寫Object hashCode 方法,這
39、個(gè)由于大家的知識(shí)積累,包括Object 的其他方法比如wait()后再講解6.7 第七部分: 雜談這這樣再運(yùn)行上面的比較程序就返回true 了,當(dāng)然其實(shí)這時(shí)最好重寫Object hashCode 方法,這個(gè)由于大家的知識(shí)積累,包括Object 的其他方法比如wait()后再講解6.7 第七部分: 雜談這再向大家強(qiáng)調(diào)下,學(xué)習(xí)象,有點(diǎn)類似于初高中學(xué)習(xí)數(shù)理化;學(xué)習(xí)數(shù)的第一步是理各個(gè)公式,然后才做題;學(xué)象的第一步也是理解背誦個(gè)基本概念定理,然后才能做項(xiàng)目。這里的基本概念有很多,如上面講解的繼承的特點(diǎn)this 于super 關(guān)鍵字等,像前幾章一會(huì)在每章的最后給大家歸納總結(jié),希望大認(rèn)真背誦。那有些同學(xué)又問老師,那個(gè)我還沒完全理解怎么辦?。恐荒芨嬖V你,這章理解起來的確很難,如果您看一遍不能完全理解也很正常,那就先背誦下來后期再仔細(xì)解;有些同學(xué)高興的說我理解了,但您理解的也可能有偏差,還是背誦下來以后反復(fù)理解同時(shí)希望您把我給您舉的案例一,有時(shí)候,案例回憶起來了,特點(diǎn)也就回憶來了。說了這么多,最后總結(jié)為一句話“學(xué)習(xí)象,關(guān)鍵是背誦理解概念”關(guān)于案例:有些同學(xué)老師,你舉例子雖然通俗易懂,但難免有些低俗,不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度出租車租賃與智能導(dǎo)航系統(tǒng)合作合同3篇
- 2025年度文化旅游展攤位租賃管理協(xié)議3篇
- 2025年度新能源汽車研發(fā)與技術(shù)轉(zhuǎn)移合同3篇
- 2024年貨物買賣協(xié)議書
- 職業(yè)學(xué)院學(xué)生獎(jiǎng)勵(lì)評(píng)審辦法
- 2024年版權(quán)購買協(xié)議:電影制片方購買劇本版權(quán)事宜
- 2024年藝人經(jīng)紀(jì)演出合同3篇
- 2024版聘請(qǐng)法律顧問合同
- 2025年度能源項(xiàng)目并購環(huán)境合規(guī)性審查協(xié)議3篇
- 2020年憲法知識(shí)競(jìng)賽題庫及答案(完整版)
- 二年級(jí)語文教學(xué)反思
- 安徽省淮北市部分學(xué)校2024-2025學(xué)年七年級(jí)上學(xué)期1月期末歷史試卷
- 化學(xué)-安徽省淮北市和淮南市2025屆高三第一質(zhì)量檢測(cè)(淮北淮南一模)試題和答案
- 2025內(nèi)蒙古電力(集團(tuán))限責(zé)任公司供電單位邊遠(yuǎn)地區(qū)崗位招聘713高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2020-2021學(xué)年【江西省撫州市】八年級(jí)(上)期末生物試卷
- 2025年山西文旅集團(tuán)招聘筆試參考題庫含答案解析
- 2023學(xué)年杭州市十四中高二數(shù)學(xué)(上)期末考試卷附答案解析
- GB/T 8607-2024專用小麥粉
- 新增值稅法學(xué)習(xí)課件
- 如何反饋與指導(dǎo)-培訓(xùn)課件
- 江蘇省高中名校2025屆高三下學(xué)期一模考試數(shù)學(xué)試題含解析
評(píng)論
0/150
提交評(píng)論