版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1Java275Java275 認識認識JavaJava第第四四章章 面向?qū)ο蟾呒壧匦悦嫦驅(qū)ο蟾呒壧匦詫W時:學時:8 8學時學時教學方法:講授教學方法:講授pptppt上機練習上機練習目標目標: : Java中的靜態(tài),類的繼承,封裝中的靜態(tài),類的繼承,封裝,多態(tài),方法的重載與覆蓋。抽象類,多態(tài),方法的重載與覆蓋。抽象類及接口的概念與使用。及接口的概念與使用。Java中的包及中的包及類路徑。引用數(shù)據(jù)類型的轉(zhuǎn)換。包裝類路徑。引用數(shù)據(jù)類型的轉(zhuǎn)換。包裝類及內(nèi)部類。訪問權(quán)限修飾符的使用類及內(nèi)部類。訪問權(quán)限修飾符的使用。 final關(guān)鍵字。關(guān)鍵字。3本章要點本章要點static的含義繼承的規(guī)則子類實例化的
2、過程方法的覆蓋final關(guān)鍵字抽象類的特性接口的規(guī)范數(shù)據(jù)類型的轉(zhuǎn)換包和訪問權(quán)限修飾符包裝類和內(nèi)部類4類的繼承類的繼承格式:Java中只能單繼承,也就是說每個類只能有一個父類。修飾符修飾符 class 子類名子類名 extends 父類名父類名生物生物植物植物動物動物人類人類貓類貓類5類的繼承類的繼承(續(xù)續(xù))父類的別名:基類BaseClass超類SuperClass子類的別名:衍生類Child ClassDerived Class6類繼承的規(guī)則類繼承的規(guī)則子類繼承父類的所有屬性和所有方法;但是構(gòu)造器不繼承;VehicletypetopSpeedstart()stop()MotorVehiclet
3、ypetopSpeedcylindersstart()stop()CartypetopSpeedcylindersstart()stop()squealTires()BoattypetopSpeedcylindersstart()stop()sinkBoat()7子類實例化的過程子類實例化的過程子類實例化是先實例化其父類,然后實例化子類。要先調(diào)用父類的構(gòu)造器,父類構(gòu)造器運行完畢,才調(diào)用子類的構(gòu)造器。如果實例化類D,說出構(gòu)造器執(zhí)行的順序。ABCDE8super和和this關(guān)鍵字關(guān)鍵字super()作用:調(diào)用父類的構(gòu)造器只能出現(xiàn)在子類的構(gòu)造器中,且必須是第一行super()中的參數(shù),決定了調(diào)用父類
4、哪個構(gòu)造器如果子類構(gòu)造器中沒有出現(xiàn)super,那么默認super(),即調(diào)用父類的空構(gòu)造器。this()作用:調(diào)用本類的構(gòu)造器只能寫在構(gòu)造器的第一行在同一個構(gòu)造器中super()和this()不能同時出現(xiàn)9super和和this關(guān)鍵字關(guān)鍵字(續(xù)續(xù))super.指向父類的引用。this.指向本類的引用。10多態(tài)多態(tài)本質(zhì)上遵守引用類型的轉(zhuǎn)換規(guī)則分為兩種表現(xiàn)形式賦值多態(tài)傳參多態(tài)(隱式的賦值多態(tài))多態(tài)的機制Override11多態(tài)多態(tài)多態(tài)(動態(tài)綁定、晚綁定多態(tài)(動態(tài)綁定、晚綁定 Polymorphism )一個對象具有多種特征,根據(jù)不同的情況來做出不同的響應多態(tài)存在的三個必要條件要有繼承,或?qū)崿F(xiàn)要有重
5、寫父類引用指向子類對象 一旦滿足以上3個條件,當調(diào)用父類中被重寫的方法后,運行時創(chuàng)建的是哪個子類的對象,就調(diào)用該子類中重寫的那個方法在執(zhí)行期間(而非編譯期間)判斷所引用對象的實際類型,根據(jù)其實際類型調(diào)用相應的方法 示例 Teacher.java Student.java Person.java SchoolManage.java12多態(tài)多態(tài)多態(tài)的優(yōu)點多態(tài)的優(yōu)點簡化代碼改善代碼的組織性和可讀性易于擴展 練習 Parker.java Vehicle.java Bus.java Truck.java Car.java在停車場收費系統(tǒng)中,收費者會根據(jù)車型的不同收取不同的停車費,其中,客車:15元/小時
6、貨車:12元/小時轎車:8元/小時編寫java程序完成此功能13訪問權(quán)限修飾符訪問權(quán)限修飾符public protected friendly private封裝Employeepublic namepublic phoneprivate salarypublic sayHello()private writeMail()Employeepublic namepublic phonepublic sayHello()訪問權(quán)限修飾符訪問權(quán)限修飾符(續(xù)續(xù)) privatefriendlyprotectedpublic類內(nèi)部同包無繼承關(guān)系類同包子類不同包子類不同包無繼承關(guān)系類位置位置權(quán)限權(quán)限15訪問
7、權(quán)限修飾符訪問權(quán)限修飾符(續(xù)續(xù))Sample包包CBEDFA訪問權(quán)限修飾符訪問權(quán)限修飾符(續(xù)續(xù))Sample類A類B類C類D類E類Fprivatexxxxxxfriendlyxxxprotectedxxpublic17靜態(tài)修飾符靜態(tài)修飾符staticstatic可以修飾的元素屬性 共享方法 訪問的方式塊 執(zhí)行的時機只能修飾類成員,不能修飾局部變量。需要注意的問題:靜態(tài)方法可以直接訪問靜態(tài)變量,如要訪問非靜態(tài)變量必須先實例化。靜態(tài)方法中不能this。靜態(tài)方法不能被非靜態(tài)方法覆蓋。 18靜態(tài)屬性靜態(tài)屬性所有對象共享也稱為類變量兩種方式訪問:類名.屬性;對象名.屬性;0 x80000 x300020
8、0Circle p0 x3000radius100radiusCircle q0 x80003.14pi靜態(tài)存儲區(qū)靜態(tài)存儲區(qū)19靜態(tài)方法靜態(tài)方法不需要實例化,可以直接訪問;也稱為類方法兩種方式訪問:直接訪問:類名.方法名();實例化后訪問:對象名.方法名();作用:簡化方法的使用;便于訪問靜態(tài)屬性;限制:靜態(tài)方法只能直接訪問靜態(tài)成員。靜態(tài)方法中不能this;靜態(tài)方法不能被非靜態(tài)方法覆蓋;20特殊的靜態(tài)方法特殊的靜態(tài)方法main必須public權(quán)限修飾符必須static靜態(tài)修飾符必須返回空值voidmain函數(shù)名不可改變String args命令行參數(shù)21變量初始化的順序變量初始化的順序隱式賦予
9、變量默認值;顯式賦予初始值;構(gòu)造方法體賦予新值;22程序塊程序塊靜態(tài)程序塊非靜態(tài)程序塊23關(guān)鍵字關(guān)鍵字finalfinal可以修飾的元素:變量(屬性和局部變量和形參):不能被重新賦值在聲明的同時賦值方法:不能被覆蓋,即不能修改。類:不能被繼承注注:final類型的屬性比較特殊,可以在聲明的同時賦值,還可以在構(gòu)造器中賦值,在其他的方法中不能夠賦值。24常量定義的一般格式常量定義的一般格式常量一般定義成下面的形式:public static final double PI=3.14;首先:一般把它設置為靜態(tài)static,多個實例共享該常量,沒有必要每個對象保存一份;其次:設置為final類型,賦值
10、以后不能再改變;第三:注意遵守常量命名規(guī)范,所有字母大寫,單詞之間使用下劃線,如MAX_VALUES。25抽象方法抽象方法只有方法聲明,沒有方法實現(xiàn)的方法;抽象方法用abstract聲明,以“;”結(jié)尾。public abstract void getArea();26抽象類抽象類含有抽象方法的類必須聲明為抽象類;用abstract聲明class。public abstract class Rectangle public abstract void getArea();27抽象類的規(guī)則抽象類的規(guī)則注意:抽象類不能被實例化;其包含的抽象方法必須在其子類中被實現(xiàn),否則該子類只能聲明為abstrac
11、t;抽象方法不能為static;在下列情況下,一個類必須聲明為抽象類: 當一個類的一個或多個方法是抽象方法時;當類是一個抽象類的子類,并且沒有實現(xiàn)父類的所有抽象方法,即只實現(xiàn)部分;當一個類實現(xiàn)一個接口,并且不能為全部抽象方法都提供實現(xiàn)時;28抽象類的思考抽象類的思考抽象類是否能夠?qū)嵗砍橄箢愂欠裥枰獦?gòu)造器?29抽象類的本質(zhì)抽象類的本質(zhì)抽象類是抽象方法和非抽象方法的集合特殊情況全部是抽象方法全部為非抽象方法實際上是一套規(guī)范30接口接口interface接口不是一個類,不能實例化;接口是常量和抽象方法的集合;接口對類來說是一套規(guī)范,是一套行為協(xié)議;定義格式如下:public interface
12、MyInterface interfaceBody 31類實現(xiàn)接口類實現(xiàn)接口接口實質(zhì)上就是一個常量和抽象方法的集合。為了使用一個接口,你要編寫實現(xiàn)接口的類。如果一個類要實現(xiàn)一個接口,那么這個類就必須實現(xiàn)接口中所有抽象方法。否則這個類只能聲明為抽象。格式如下:public class MyClass implements MyInterface /實現(xiàn)接口中所有抽象方法實現(xiàn)接口中所有抽象方法 32接口的特點接口的特點接口使用interface關(guān)鍵字來定義,而不是class。接口中定義的變量都是公共靜態(tài)最終變量。接口中沒有自己的構(gòu)造函數(shù),而且接口中定義的方法全部都是抽象方法,即只提供方法的定義,而
13、沒有提供方法的具體實現(xiàn)的語句。接口采用多繼承機制,而不像類一樣采用單繼承機制。接口默認:常量:public static final抽象方法: public abstract33接口與抽象類的區(qū)別接口與抽象類的區(qū)別接口不能含有任何非抽象方法,而抽象類可以。類可以實現(xiàn)許多接口,但只能有一個父類。接口不是類分級結(jié)構(gòu)的一部分,沒有聯(lián)系的類可以實現(xiàn)相同的接口。34類的繼承類的繼承interfaceimplementsclass A implements C, D classclass extendsclass A extends B interfaceclassimplementsclass A im
14、plements C classclassextendsclass A extends B implements C implementsinterfaceimplementsinterfaceclass A extends B implements C, D 35抽象類的繼承抽象類的繼承classabstract classextendsclass A extends B abstract classextendsabstract class A extends B abstract classimplementsinterfaceabstract class A implements C,
15、 D implementsinterfaceabstract class A implements C abstract classinterfaceimplementsabstract class A extends B implements C, D interfaceimplements36接口的繼承接口的繼承extendsinterface A extends B interfaceinterfaceinterfaceextendsinterface A extends B, C, D interfaceextends37訪問接口中常量訪問接口中常量public static fina
16、l int MAX_SPEED=100;有三種方式:對象名.MAX_SPEED類名. MAX_SPEED接口名. MAX_SPEED38引用數(shù)據(jù)類型的轉(zhuǎn)換引用數(shù)據(jù)類型的轉(zhuǎn)換前提:具有繼承關(guān)系原則:子類就是父類向上造型:子類轉(zhuǎn)換為父類,自動轉(zhuǎn)換;生物生物植物植物動物動物人類人類貓類貓類向上轉(zhuǎn)型向上轉(zhuǎn)型39引用數(shù)據(jù)類型的轉(zhuǎn)換引用數(shù)據(jù)類型的轉(zhuǎn)換(續(xù)續(xù))向下造型:強制轉(zhuǎn)換曾經(jīng)向上轉(zhuǎn)換過的對象,才能再向下轉(zhuǎn)換。向上轉(zhuǎn)換損失了子類新擴展的屬性和方法僅剩下父類中聲明過的屬性和方法Person p = new Student();Student s = (Student)p;40instanceof運算符運算
17、符instanceof運算符的一般格式:object instanceof classobject instanceof interface返回值都是boolean41內(nèi)部類的定義及特點內(nèi)部類的定義及特點內(nèi)部類就是定義在另一個類內(nèi)部的類。內(nèi)部類對于同一包中的其它類來說,內(nèi)部類能夠隱藏起來。42內(nèi)部類和外部類之間的訪問內(nèi)部類和外部類之間的訪問無需創(chuàng)建外部類的對象,即可從內(nèi)部類訪問外部類的變量和方法。必須創(chuàng)建內(nèi)部類的對象,否則無法從外部類訪問內(nèi)部類的變量和方法。如果內(nèi)部類中有和外部類同名的變量或方法,則內(nèi)部類的變量和方法將獲得比外部類的變量和方法更高的優(yōu)先級。不能定義static變量43從其他類訪問內(nèi)部類從其他類訪問內(nèi)部類在Outer內(nèi)訪問Inner,只需如下:Inner in=new Inner();在Outer外訪問Inner,必須如下:Outer o = new Outer(); /實例化外部類Outer.Inner
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育法規(guī)模擬考試試卷A卷含答案
- 中國消費者食品添加劑認知調(diào)查報告 2023
- 2024年數(shù)控高精度內(nèi)外圓磨床項目資金申請報告代可行性研究報告
- 2024年xx村10月駐村工作總結(jié)
- 二年級數(shù)學(上)計算題專項練習
- 2024年度影視制作費用協(xié)議范本
- 第七屆進博會隆重開幕感悟心得
- 2024年商業(yè)廣告承攬協(xié)議規(guī)范格式
- 2024年產(chǎn)蜜蜂購買協(xié)議
- 2024年零星建筑施工項目協(xié)議范本
- 采購主管崗位招聘筆試題與參考答案(某大型國企)2024年
- 短視頻運營及帶貨邏輯課件
- 2024年中國陶茶具市場調(diào)查研究報告
- 2022年江蘇省普通高中學業(yè)水平測試生物試卷
- 第4章 跨境電商選品與定價
- 《介紹教室》(教案)-2024-2025學年一年級上冊數(shù)學北師大版
- 2024年檢察院招錄書記員考試法律基礎知識及答案
- 《犯罪心理學(馬皚第3版)》章后復習思考題及答案
- 青驕第二課堂2021年禁毒知識答題期末考試答案(初中組)
- 2024-2030年中國射頻芯片行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 華電線上測評
評論
0/150
提交評論