面向?qū)ο蟾呒塤第1頁
面向?qū)ο蟾呒塤第2頁
面向?qū)ο蟾呒塤第3頁
面向?qū)ο蟾呒塤第4頁
面向?qū)ο蟾呒塤第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論