資源描述:
《java初學(xué)者常見問題》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、instanceof instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類東西。由于它是由字母組成的,所以也是Java的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回boolean類型的數(shù)據(jù)。 舉個(gè)例子: Strings="IAManObject!"; booleanisObject=sinstanceofObject; 我們聲明了一個(gè)String對(duì)象引用,指向一個(gè)String對(duì)象,然后用instanceof來測(cè)試它所指向的對(duì)象是否是Object類的一
2、個(gè)實(shí)例,顯然,這是真的,所以返回true,也就是isObject的值為true。 instanceof有一些用處。比如我們寫了一個(gè)處理賬單的系統(tǒng),其中有這樣三個(gè)類: publicclassBill{//省略細(xì)節(jié)} publicclassPhoneBillextendsBill{//省略細(xì)節(jié)} publicclassGasBillextendsBill{//省略細(xì)節(jié)} 在處理程序里有一個(gè)方法,接受一個(gè)Bill類型的對(duì)象,計(jì)算金額。假設(shè)兩種賬單計(jì)算方法不同,而傳入的Bill對(duì)象可能是兩種中的任
3、何一種,所以要用instanceof來判斷: publicdoublecalculate(Billbill){ if(billinstanceofPhoneBill){ //計(jì)算電話賬單 } if(billinstanceofGasBill){ //計(jì)算燃?xì)赓~單 } ... } 這樣就可以用一個(gè)方法處理兩種子類。 然而,這種做法通常被認(rèn)為是沒有好好利用面向?qū)ο笾械亩鄳B(tài)性。其實(shí)上面的功能要求用方法重載完全可以實(shí)現(xiàn),這是面向?qū)ο缶幊虘?yīng)有的做法,避免回到結(jié)構(gòu)化編程模式。只要提供兩個(gè)名
4、字和返回值都相同,接受參數(shù)類型不同的方法就可以了: publicdoublecalculate(PhoneBillbill){ //計(jì)算電話賬單 } publicdoublecalculate(GasBillbill){ //計(jì)算燃?xì)赓~單 } 所以,使用instanceof在絕大多數(shù)情況下并不是推薦的做法,應(yīng)當(dāng)好好利用多態(tài)。 instanceof一般情況下用在對(duì)象類型的強(qiáng)制轉(zhuǎn)換, 例如: 繼承關(guān)系classManagerextendsEmployee -------------
5、--------------------------------------------- publicvoiddoSomething(Employeee){ if(einstanceofManger){ Managerm=(Manager)e; } } 網(wǎng)絡(luò)釋義 1.運(yùn)算符返回一個(gè)Boolean值,表明某個(gè)對(duì)象是否為特定類的一個(gè)實(shí)例。...instanceof運(yùn)算符...返回一個(gè)Boolean值,表明某個(gè)給定的數(shù)是否是有窮的。 2.和回調(diào)概念?instanceof和回調(diào)概念...i
6、nstanceof和回調(diào)概念... 3.動(dòng)態(tài)的 4.操作符?java的方法重寫和覆蓋什么是方法的重載:java中,可以在同一個(gè)類中用相同的名稱定義兩個(gè)或者多個(gè)方法,但是參數(shù)項(xiàng)不同(分為參數(shù)類型不同和參數(shù)數(shù)量不同)。當(dāng)兩個(gè)方法名稱相同而參數(shù)項(xiàng)不同時(shí),那么就認(rèn)為此方法被重載,而此過程就被稱為"方法重載"。-11-調(diào)用重載方法時(shí),java使用參數(shù)的類型和數(shù)量決定實(shí)際調(diào)用重載方法的哪個(gè)版本。重載方法可以具有不同的返回類型,但返回類型本身不足以區(qū)分方法的兩個(gè)版本。因此重載方法的參數(shù)類型或者數(shù)量必須不同.方
7、法重載支持多態(tài)性,因?yàn)樗莏ava實(shí)現(xiàn)"一個(gè)接口,多重方法"模式的一種方式。此外,構(gòu)造方法也可以被重載。什么是方法重寫:在類體系結(jié)構(gòu)中,當(dāng)子類中的方法與其父類中的方法具有相同的方法時(shí),則認(rèn)為子類中的方法重寫了父類中的方法。從子類中調(diào)用重寫方法時(shí),將總是調(diào)用出現(xiàn)在子類中的方法,而父類中的方法將會(huì)被隱藏。如果程序員需要訪問重寫方法的父類中的該方法,可以使用關(guān)鍵字super來完成。java中覆蓋、重寫與重載的區(qū)別收藏override為覆蓋又叫重寫,從字面就可以知道,它是覆蓋了一個(gè)方法并且對(duì)其重寫,以求達(dá)到
8、不同的作用。對(duì)我們來說最熟悉的覆蓋就是對(duì)接口方法的實(shí)現(xiàn),在接口中一般只是對(duì)方法進(jìn)行了聲明,而我們?cè)趯?shí)現(xiàn)時(shí),就需要實(shí)現(xiàn)接口聲明的所有方法。除了這個(gè)典型的用法以外,我們?cè)诶^承中也可能會(huì)在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點(diǎn):1、重寫方法的參數(shù)列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是重載.2、重寫方法的訪問修飾符一定要大于被重寫方法的訪問修飾符(public>protected>default>private)。3、重寫的方法的返回值必須和被重寫的方