




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
手機游戲JAVA語言基礎第4章面向?qū)ο缶幊痰?章
面向?qū)ο缶幊汤^承包訪問控制修飾符抽象類接口繼承訪問控制修飾符接口 繼承接口掌握Java面向?qū)ο蟪绦蛟O計第4章
面向?qū)ο缶幊?.7繼承4.7.1繼承的概念和使用
面向?qū)ο蟪绦蛟O計的特性之一就是允許編程者在已定義的類的基礎上建立新的類。作為新類的基礎的類可以是程序員自己實現(xiàn)的類,也可以使Java標準類庫中的類。在已有類的基礎上通過繼承或擴展的機制來實現(xiàn)類的重用,能夠極大的提高編程效率。
第4章
面向?qū)ο缶幊?.7繼承4.7.1繼承的概念和使用
基于現(xiàn)有的類定義新類的做法稱為派生(derivation)。新的類或派生類被稱為派生它的類的子類(subclass)。
原有的類叫基類(baseclass)、父類或超類(superclass)。父類也可以有自己的父類,子類也可以有子類。
第4章
面向?qū)ο缶幊?.7繼承4.7.1繼承的概念和使用子類是作為另一個類的擴充或修正所定義的一個類。bicycle(superclass)MountainbikesRacingbikesTandembikessubclass第4章
面向?qū)ο缶幊蘆ava中不支持多重繼承。通過在類的聲明中加入extends子句來創(chuàng)建一個類的子類。格式為:classSubClassextendsSuperClass{//bodyofclass}4.7繼承4.7.1繼承的概念和使用第4章
面向?qū)ο缶幊?.7繼承4.7.1繼承的概念和使用繼承是子類利用父類中定義的方法和變量,就像它們屬于子類本身一樣。
子類包括超類的所有成員,但不能訪問父類中被聲明為 private的成員。
如果一個類沒有顯式的繼承任何類,則默認繼承Object類。
第4章
面向?qū)ο缶幊?.7繼承4.7.2方法的覆蓋
如果在子類中定義一個方法,其名稱、返回類型及參數(shù)列表與父類中方法的名稱、返回類型及參數(shù)完全一樣,那么新方法被稱做覆蓋舊方法。其作用是:有時候,可能覺得父類中的方法不能滿足需要,覆蓋使得在子類中可以重新定義父類中已有的方法,從而體現(xiàn)出子類自己的行為。第4章
面向?qū)ο缶幊?.7繼承4.7.2方法的覆蓋classCar{intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}publicvoidadd_oil(){…}}classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}publicvoidpush_break(){speed=speed–10;}}覆蓋的示例:第4章
面向?qū)ο缶幊套宇惸軇?chuàng)建一個與父類方法有不同功能的方法,但具有相同的名稱返回類型參數(shù)表4.7繼承4.7.2方法的覆蓋第4章
面向?qū)ο缶幊?.7繼承4.7.2方法的覆蓋方法覆蓋時應遵循的原則:1) 覆蓋后的方法不能比被覆蓋的方法有更嚴格的訪問
權限;2) 覆蓋后的方法不能比被覆蓋的方法產(chǎn)生更多的異常。第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
關鍵字this的用法之一是用來指向當前對象或類實例的。publicclassMyDate{privateintday,month,year;publicvoidtomorrow(){this.day=this.day+1;}}1.this關鍵字第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
1.this關鍵字this關鍵字還有另一種含義。如果構造方法的第一個語句具有形式:
this(…)
那么這個構造方法將調(diào)用同一類中的由this后括號內(nèi)參數(shù)指定的其它構造方法。
第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
1.this關鍵字例如有定義類如下:classA{publicA(){System.out.println("被構造方法所調(diào)用"); } publicA(inta){ this(); System.out.println(a); }}
可以看到上類中構造方法被重載,并且在有參構造方法中使用this調(diào)用了本類中另一個無參構造方法。第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
1.this關鍵字main()方法如下:classTest{publicstaticvoidmain(String[]args){Aa=newA(100);}}運行結(jié)果如下:被構造方法所調(diào)用100第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
2.super關鍵字super.
+方法名可以調(diào)用父類中的方法super的另外一種是調(diào)用父類的構造方法
super關鍵字也有兩個作用:第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
2.super關鍵字【案例】利用super關鍵字調(diào)用父類父類:classA{publicA(){System.out.println("被構造方法所調(diào)用");}}子類:classBextendsA{ publicB(){ super(); System.out.println("B構造方法"); }}第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
2.super關鍵字main()方法:classTest{publicstaticvoidmain(String[]args){Bb=newB();}}第4章
面向?qū)ο缶幊?.7繼承4.7.3this和super關鍵字
2.super關鍵字運行結(jié)果:被構造方法所調(diào)用B構造方法
這個構造方法是通過專門的super語法來調(diào)用的。使用super的調(diào)用必須是子類構造器中的第一條語句。第4章
面向?qū)ο缶幊?.7繼承4.7.4對象的構造1。產(chǎn)生對象并對員變量默認初始化2.對構造方法中的形式參數(shù)賦值3.構造方法中是否有this語句調(diào)用4.super調(diào)用或隱式調(diào)用父類構造方法5.對當前類中的成員變量顯示初始化6.執(zhí)行當前構造函數(shù)中的代碼一直追溯到Object類為止否第4章
面向?qū)ο缶幊?.7繼承4.7.5多態(tài)性
編譯時多態(tài):在編譯階段,具體調(diào)用哪個被重載的方法,編譯器會根據(jù)參數(shù)的不同來靜態(tài)確定調(diào)用相應的方法。
運行時多態(tài)由于子類繼承了父類所有的屬性(私有的除外),所以子類對象可以作為父類對象使用。程序中凡是使用父類對象的地方,都可以用子類對象來代替。
第4章
面向?qū)ο缶幊?.7繼承4.7.6final關鍵字 final是一個應用很廣泛的關鍵字。它可以修飾類、類的成員變量和成員方法,但其中作用各不相同。1.final修飾變量final修飾變量,則成為常量,語法格式如下:finaltypevariableName;
修飾成員變量時,定義時同時給出初始值;而修飾局部變量時不做要求。
final修飾的變量一旦初始化后,以后將不能再修改。第4章
面向?qū)ο缶幊?.7繼承4.7.6final關鍵字1.final修飾變量例如:classAA{ finalintONE=11; voidchange(inti){ ONE=i; }}定義了一個常量錯誤,不能改變one的值第4章
面向?qū)ο缶幊?.7繼承4.7.6final關鍵字2.final修飾方法 final修飾方法,則該方法不能被子類重寫,語法格式如下:finalreturnTypemethodName(paramList){…}第4章
面向?qū)ο缶幊蘡lassA{fianlvoidmeth(){System.out.println(“ina”)}}classBextendsA{voidmeth(){System.out.println(“inb”){}定義了一個最終方法錯誤,因為meth()方法是最終方法4.7繼承4.7.6final關鍵字2.final修飾方法例如:第4章
面向?qū)ο缶幊?.7繼承4.7.6final關鍵字3.final修飾類final修飾類,則類不能被繼承,語法格式如下:finalclassfinalClassName{…}第4章
面向?qū)ο缶幊蘤inalclassAA{finalintONE=11;voidchange(inti){ System.out.println("i="+i);}}classBBextendsAA{//省落BB類的內(nèi)容}定義了一個最終類錯誤,因為AA是不能被繼承4.7繼承4.7.6final關鍵字3.final修飾類例如:第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
包(package)是Java編程的重要概念。
包有利于將各種不同功能的類分類。
包避免了類名的沖突。
第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
Java中用package語句來將一個Java源文件中的類打成一個包。
package語句作為Java源文件的第一條語句,指明該文件中定義的類所在的包。(若缺省該語句,則指定為無名包)。它的格式為:
packagepkg1[.pkg2[.pkg3…]];Java編譯器把包對應于文件系統(tǒng)的目錄管理。
package語句中,用“.”來指明目錄的層次。第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
“庫”也由一系列類文件構成。每個文件都有一個組 件。 使用package關鍵字將所有這些組件(它們在各自 獨立的.java和.class文件里)都歸納到一起。
在一個文件的開頭使用下述代碼:
packagemypackage;第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
package語句必須作為文件的第一個非注釋語 句出現(xiàn)。
package語句的作用是指出這個編譯單元屬于 名為mypackage的一個庫的一部分。 如果其他人想使用這個名字,指出完整的名 字。第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
使用打包語句時,創(chuàng)建的包名一定是獨一無二。 編譯器強迫package名的第一部分是類創(chuàng)建者 的因特網(wǎng)域名。 將package名解析成自己機器上的一個目錄 注意根據(jù)Java包的約定,名字內(nèi)的所有字母 都應小寫,甚至那些中間單詞亦要如此。
第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
例如,假定將文件名是MyClass.java的文件打包:packagemypackage;
publicclassMyClass{
}第4章
面向?qū)ο缶幊?.8包
4.8.1包的含義和使用
用import關鍵字導入一個完整的庫時,就會獲得“包”。例如:importjava.util.*;
上述import語句的作用是導入完整的實用工具(Utility)庫,該庫屬于標準Java開發(fā)工具包的一部分。若想導入單獨一個類,可在import語句里指定那個類的名字。例如:importjava.util.Vector;第4章
面向?qū)ο缶幊?.8包
4.8.1訪問修飾符屬性允許的訪問無修飾限制允許同一包下任何類中的方法訪問public允許來自任何類中的方法訪問protected允許本包中的類和所有子類(即便不在同一包)的方法訪問private只允許本類內(nèi)部的方法訪問,其他任何訪問都被拒絕
類中的成員變量和成員方法都可以使用訪問修飾符來控制其訪問的權限。對類中成員訪問屬性的限定有四種類型:第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.1抽象類
有時在庫開發(fā)中,要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該行為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其他類可以在類中實現(xiàn)這些方法。 這樣的類通常被稱做抽象類(abstractclass)。通過用關鍵字abstract進行標記聲明一個抽象類。
第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.1抽象類抽象類的語法格式如下:abstractclassabstractClass{…}抽象方法的語法格式如下:abstractreturnTypeabstractMethod([paramlist]);定義Actor抽象類:publicabstractclassActor{ intlife=100;
publicabstractvoidattact(Actora);
publicvoiddefine(intdefineValue){//根據(jù)不同類型減少生命值的簡單代碼
}}第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.1抽象類抽象類必須被繼承,抽象方法必須被重寫。抽象方法只需聲明,無需實現(xiàn);抽象類不能被實例化,抽象類不一定要包含抽象方法。若類中包含了抽象方法,則該類必須被定義為抽象類。不能有抽象構造方法或抽象靜態(tài)方法。abstract類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類。publicclassHeroextendsActor{publicvoidattact(Actora){//根據(jù)不同子類對象實現(xiàn)攻擊方法
}}第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.2接口
接口是類似于類的一種結(jié)構。可以把接口看成是由常量和抽象方法組成的特殊類。(接口特別像純粹的抽象類)接口是對C++的多重繼承性的替代,即接口是用來實現(xiàn)類間多重繼承功能的結(jié)構。
Java語言規(guī)定:一個類只能繼承一個父類。通過實現(xiàn)接口,某個類可以擁有多個父接口。第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.2接口接口的定義格式:[public]interfaceinterfaceName[extendslistOfSuperInterface]{…}接口體包括常量定義和方法定義。第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.2接口常量定義格式為:typeNAME=value;
其自動具有public,final,static的屬性,所以寫成如下格式是一樣的:
publicstaticfinaltypeNAME=value;
第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.2接口方法定義格式為:
returnTypemethodName([paramlist]);其自動具有public和abstract屬性,所以寫成如下格式也是一樣的:
publicabstractreturnTypemethodName([paramlist]);第4章
面向?qū)ο缶幊?.9抽象類和接口4.9.2接口定義接口的特點:
定義的方法沒有方法體.它們本質(zhì)上是抽象方法,每個 實現(xiàn)接口的類必須實現(xiàn)所有的方法。接口中可以聲明變量,它們是,publicfinal和static型。如果一個類實現(xiàn)了一個接口,但是不完全實現(xiàn)接口定 義的方法,那么該類必須定義成abstract型。第4章
面向?qū)ο缶幊?.9抽
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建德地坪施工方案
- 企業(yè)溝通策略作業(yè)指導書
- 全新中藥材合同
- 腳手架工程施工方案
- 信息技術軟件開發(fā)作業(yè)指導書
- 菏澤綠地施工方案
- 冬季填充墻施工方案
- 墻面懸空托架施工方案
- 融發(fā)大廈施工方案
- 罐區(qū)施工方案
- 工程質(zhì)量回訪記錄
- GB/T 2572-2005纖維增強塑料平均線膨脹系數(shù)試驗方法
- 2023年江蘇省中學生生物奧林匹克競賽試題及答案
- 維修質(zhì)量檢驗制度
- 食管支架植入術后護理課件
- 品質(zhì)控制計劃(QC工程圖)
- 海外派遣人員管理辦法
- 混凝土灌注樁質(zhì)量平行檢查記錄(鋼筋籠)
- 汽車營銷學(全套課件)
- 現(xiàn)澆墩臺身軸線偏位、全高豎直度檢測記錄表
- 激光共聚焦顯微鏡校準規(guī)范編制說明
評論
0/150
提交評論