




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 第三章,第四章內(nèi)容總結(jié) -Mr yang 多態(tài)性: 發(fā)送消息給某個(gè)對象,讓該對象自行決定響應(yīng)何種行為。 通過將子類對象引用賦值給超類對象引用變量來實(shí)現(xiàn)動(dòng)態(tài)方法調(diào)用。動(dòng)態(tài)綁定: 一、使用父類類型的引用指向子類的對象; 二、該引用只能調(diào)用父類中定義的方法和變量; 三、如果子類中重寫了父類中的一個(gè)方法,那么在調(diào)用這個(gè)方法的時(shí)候,將會(huì)調(diào)用子類中的這個(gè)方法;(動(dòng)態(tài)連接、動(dòng)態(tài)調(diào)用) 四、變量沒有被重寫(覆蓋)的概念,”重寫“的概念只針對方法, 1.方法重載: 在同一個(gè)類中定義了兩個(gè)以上的同名的方法, 但是它們擁有不同的參數(shù)列表。 1.1重載的條件:參數(shù)不同a.個(gè)數(shù)不相同b.類型不同*c.順序不同注意:與
2、方法的返回類型無關(guān),和訪問修飾符無關(guān) 2.方法重寫:在子類中定義了一個(gè)和父類中相同的方法,父類的方法在子類中就被覆蓋了(隱藏了). 3.動(dòng)態(tài)綁定:父類的引用指向子類的對象,如果調(diào)用的方法在子類中被重寫,則調(diào)用子類重寫了的方法。如果調(diào)用的方法在父類中沒有定義,則報(bào)錯(cuò)。訪問修飾符:1.tected3.private4.默認(rèn)的方法修飾符:1.static:靜態(tài)方法中不能訪問非靜態(tài)的變量和方法,也不能使用this和super關(guān)鍵字 static 關(guān)鍵字修飾的代碼不依賴具體的對象實(shí)例. 總是比普通的代碼塊先加載2.final:能修飾類,方法,屬性。 2.1:final修飾類時(shí):該類
3、不能被繼承. 2.2:final修飾方法時(shí):該方法不能被重寫. 2.3:final修飾類的成員屬性時(shí):聲明時(shí)就要賦值,或者在構(gòu)造方法中給它賦值. final修飾類的屬性時(shí):必須在聲明時(shí)賦值final修飾局部變量:如果在聲明時(shí)沒有賦值,則在后面的代碼中可以有一次給它賦值的機(jī)會(huì),一旦賦值則該變量的值不可更改。 final修飾的變量是引用類型時(shí)指引用不能更改,引用指向的對象的屬性值是可以更改的. Final 表示最終的3.abstract:修飾類,方法. 抽象方法使用abstract修飾符修飾 抽象方法只能在抽象類中聲明。 即:如果一個(gè)類中存在一個(gè)或以上的抽象方法,則該類也要聲明為抽象類。 3.1:
4、抽象類不能實(shí)例化對象。 3.2:抽象類中可以有抽象方法,也可以有普通方法。 3.3:構(gòu)造方法不能聲明為抽象的,因?yàn)樽宇悷o法覆蓋。 3.4:子類繼承抽象類時(shí)必須重寫父類中所有的抽象方法,否則自己也要聲明為抽象類. 3.5:可以聲明抽象類的引用指向子類的對象。 動(dòng)態(tài)綁定 4 接口:關(guān)鍵字interface聲明接口。解決java不能多重繼承的機(jī)制。1.接口中的方法都是抽象的。2.接口中的方法默認(rèn)時(shí)public和abstract,所以public和abstract可以省略.3.接口中可以聲明屬性,屬性默認(rèn)為public static final4.接口使用關(guān)鍵字interface聲明,使用implem
5、ents實(shí)現(xiàn)接口. 問題: 接口和抽象的區(qū)別 ? 相同點(diǎn) 區(qū)別 : 繼承 : 代碼的可重用性抽象類 : 代碼的靈活性 固定的方法 (數(shù)據(jù)庫 )接口: 代碼的可擴(kuò)展性 java訪問權(quán)限修飾符public protected default private用法總結(jié) 首先聲明:java中,default這個(gè)修飾符并沒有顯式的聲明,在成員變量和方法前什么修飾符也不用,默認(rèn)的就是default。為了條理清晰,分三種不同情況來總結(jié)。 一 訪問權(quán)限修飾符修飾成員變量和方法 p
6、ublic:表明該成員變量和方法是共有的,能在任何情況下被訪問。 protected:必須在同一包中才能被訪問及其子類中可以(說的比較簡單,看個(gè)例子就明白了) eg:class A protecte
7、d int weight; protected int f( int a,int b ) / 方法體
8、160; 假設(shè)B與A在同一個(gè)包中,則 class B &
9、#160; void g() A a=new A(); &
10、#160; A.weight=100;/合法 A.f(3,4); /合法
11、0; 特別說明:什么是在同一個(gè)包中? 答:用package打包在一起的class ,叫在同一個(gè)包中。(不明白,舉個(gè)例子) eg:在JDK的srcjavaio中,你會(huì)看到許多java類,第一句源代碼都是package java.io; 沒有使用package打包的,在同一目錄下的類也會(huì)被視做同一個(gè)包。 default:在這種情況下中,同包中的子類。區(qū)別在第二和第三種情況中。
12、60; eg: class A int weight ; int f( int a,int b )
13、60; / 方法體
14、 假設(shè)B與A在同一個(gè)包中,則 class B void g()
15、60; A a=new A(); A.weight=100;/合法 A.f(3,4);
16、0; /合法 private: 只能在本類中訪問。 eg: class Test
17、 private int money;
18、60; Test() &
19、#160; money=2000;
20、 private int getMoney()
21、 return money;
22、60; public static void main(String args) &
23、#160; Test te=new Test(); te.money=3000;
24、160; /合法 int m=te.getMoney(); /合法
25、60; System.out.println("money="+m);
26、160; PS: 實(shí)際上,把重要的數(shù)據(jù)修飾為private,然后寫一個(gè)public的函數(shù)訪問它,正好體現(xiàn)了OOP的封裝特性,是OOP安全性的體現(xiàn)。 二 訪問權(quán)限修飾符修飾類 1
27、,不能用protected和private修飾類。 2,用default修飾的類叫友好類,在另外一個(gè)類中使用友好類創(chuàng)建對象時(shí),要保證它們在同一包中。 三 訪問權(quán)限修飾符與繼承 這里的訪問修飾符指的是修飾成員變量和方法??梢苑譃閮煞N情況: 1,子類與父類在同一包中 此時(shí)只有聲明為private的變量與方法不能被繼承(訪問)。 eg: class Father &
28、#160; private int money ; int weight=100; class Son extends Father
29、160; viod f() money=10000;/ 非法 weight=100; / 合法 2,子
30、類與父類不在同一包中 此時(shí)private與default均不能被繼承(訪問), protected與public可以。 eg: Father.java package com.aaa public class Father
31、160; int height ; protected int money=120; public int weight; protected int getMoney() return m
32、oney; void setMoney(int newMoney) money=newMoney;
33、 Son.java package com.bbb import com.aaa.Father; public class Son extends Father void f()
34、 money=10000;/合法 /height=170;/非法,height為default修飾的變量 System.out.println(money);/輸出結(jié)
35、果是10000 /setMoney(300); /非法 int number=getMoney(); /合法
36、 System.out.println(number);/輸出結(jié)果是10000 public static void main(String args)
37、 Son sss=new Son(); sss.f(); 所以,訪問權(quán)限修飾符權(quán)限從高到低排列是public ,protected ,default, private。Java
38、中的abstract,static,final修飾符abstract修飾符 abstract使用對象:類、接口、方法介紹:類中包括沒有實(shí)現(xiàn)的方法,不能被實(shí)例化。如果是一個(gè)abstract方法,則方法體為空,該方法的實(shí)現(xiàn)在子類中被定義,并且包含一個(gè)abstract方法的類必須是一個(gè)abstract類abstract修飾符表示所修飾的類沒有完全實(shí)現(xiàn),還不能實(shí)例化。如果在類的方法聲明中使用abstract修飾符,表明該方法是一個(gè)抽象方法,它需要在子類實(shí)現(xiàn)。 在下面的情況下,類必須是抽象
39、類: 1.類中包含一個(gè)明確聲明的抽象方法; 2.類的任何一個(gè)父類包含一個(gè)沒有實(shí)現(xiàn)的抽象方法; 3.類的直接父接口聲明或者繼承了一個(gè)抽象方法,并且該類沒有聲明或者實(shí)現(xiàn)該抽象方法。 如下例所示: abstract class A1
40、public int v1; abstract void test(); abstract class A2 extends A1 public int v2; class
41、Sample extends A2 void test() 因?yàn)榘粋€(gè)抽象方法test,類A1必須被聲明為抽象類。它的子類A2繼承了抽象方法test,但沒有實(shí)現(xiàn)它,所以它也必須聲明為抽象類。然而,A2的子類Sample因?yàn)閷?shí)現(xiàn)了test,所以它不必聲明為抽象的。 注意:
42、60;如果試圖創(chuàng)建一個(gè)抽象類的實(shí)例就會(huì)產(chǎn)生編譯錯(cuò)誤; 如果一個(gè)類是非抽象類卻包含一個(gè)抽象方法,就會(huì)產(chǎn)生編譯錯(cuò)誤; 構(gòu)造函數(shù)和靜態(tài)函數(shù)以及Final修飾的函數(shù)不能使用abstract修飾符; 接口缺省為abstract。 Static修飾符static使用對象:類、方法、變量、初始化函數(shù)通常,在創(chuàng)建類的實(shí)例時(shí),每個(gè)實(shí)例都會(huì)創(chuàng)建自己實(shí)例變量。但是在變量的聲明中可以使用Static修飾符,它表明該成員變量屬于類本身,獨(dú)立于類產(chǎn)生的任何對象。這種成員變量稱為靜態(tài)變量
43、(靜態(tài)屬性)。方法的聲明中也可以使用static修飾符,表明該方法從屬于類本身。靜態(tài)屬性和靜態(tài)方法不需要?jiǎng)?chuàng)建實(shí)例就可以使用。 典型的例子是java.lang包中的System類中的方法和變量。我們常用 System.out.println(“message”); 輸出信息,并沒有創(chuàng)建System的實(shí)例,是因?yàn)閜rintln方法聲明為System類的靜態(tài)方法,它不需創(chuàng)建實(shí)例就可以使用。 下面的例子會(huì)幫助你更深刻的理
44、解Static修飾符。注意各個(gè)代碼塊的加載次序。 class Sample static int s1=3; static int s2; static void display()
45、160; System.out.println("s1="+s1); System.out.println("s2="+s2); s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)會(huì)計(jì)師服務(wù)合同
- 2025-2030年中國過氧化鋅市場十三五規(guī)劃及發(fā)展策略分析報(bào)告
- 2025-2030年中國軟體家具制造行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報(bào)告
- 2025-2030年中國花崗巖荒料行業(yè)運(yùn)營現(xiàn)狀及發(fā)展趨勢分析報(bào)告
- 2025-2030年中國給水用PPR塑料管道市場發(fā)展現(xiàn)狀規(guī)劃研究報(bào)告
- 2025-2030年中國端氨基聚醚行業(yè)風(fēng)險(xiǎn)評估及發(fā)展策略研究報(bào)告
- 2025-2030年中國硫鐵礦燒渣行業(yè)運(yùn)行動(dòng)態(tài)規(guī)劃研究報(bào)告
- 2025-2030年中國礦渣粉產(chǎn)業(yè)十三五規(guī)劃及發(fā)展策略分析報(bào)告
- 四年級數(shù)學(xué)三位數(shù)乘兩位數(shù)綜合考核例題帶答案
- 游戲軟件開發(fā)服務(wù)合作協(xié)議書
- 熱能與動(dòng)力工程測試技術(shù)- 液位測量
- 化學(xué)纖維精品課件
- 中式面點(diǎn)師初級(五級)教學(xué)計(jì)劃、大綱
- QC成果構(gòu)造柱澆筑新技術(shù)的研發(fā)創(chuàng)新(附圖)
- 2020 ACLS-PC-SA課前自我測試試題及答案
- BIM技術(shù)應(yīng)用管理辦法
- 信息論與編碼第4章信息率失真函數(shù)
- extreme-sports 極限運(yùn)動(dòng) 英文 ppt
- 國際注冊建造師與項(xiàng)目管理師雙資格認(rèn)證
- 空間幾何向量法之點(diǎn)到平面的距離
- 反激式變壓器計(jì)算表格
評論
0/150
提交評論