版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、面向?qū)ο蟮某绦蛟O(shè)計(jì),第五章,2,回顧,掌握一維數(shù)組的定義和使用 掌握二維數(shù)組的定義和使用 掌握數(shù)組常用方法的使用,3,目標(biāo),面向?qū)ο蟮幕靖拍睢?類的聲明以及成員變量、方法的聲明和訪問權(quán)限。 對(duì)象的生成和使用。 繼承和多態(tài)的概念及其實(shí)現(xiàn)。 this和super的使用。 包和接口的使用。,4,5.1.1 對(duì)象,對(duì)象是具有某些特殊屬性(數(shù)據(jù))和行為方式(方法)的實(shí)體。 可以是有生命的個(gè)體,比如一個(gè)人或一只老虎。也可以是無生命的個(gè)體,比如一輛汽車或一臺(tái)計(jì)算機(jī)。也可以是一個(gè)抽象的概念,如天氣的變化或鼠標(biāo)所產(chǎn)生的事件。,兩個(gè)特征:屬性(Property)和行為(Behavior) 如:一個(gè)人的屬性有:姓
2、名、性別、年齡、身高、體重等 行為有:唱歌、打球、騎車、學(xué)習(xí)等。,5,5.1.2 消息,單一對(duì)象的存在并沒有多大的作用,只有多個(gè)對(duì)象相互作用才會(huì)完成復(fù)雜的行為。 對(duì)象和對(duì)象之間是通過傳遞消息來完成相互通信的。 一個(gè)消息由三方面內(nèi)容組成: 1)消息的接收者,即消息的目標(biāo)對(duì)象; 2)接收對(duì)象采用的方法; 3)執(zhí)行方法所需用的參數(shù)(Parameters)。,例如:一輛自行車放在車棚中并沒有什么用,當(dāng)我們?nèi)蓑T 上它,并加速時(shí)才體現(xiàn)它的作用,其中接收者(自行車), 采用的方法(加速),所需的參數(shù)(上升到更高的檔位)。,6,5.1.3 類,類是具有共同屬性和行為的對(duì)象的抽象。 類可以定義為數(shù)據(jù)和方法的集合
3、。 對(duì)象具有特殊屬性和行為方式的實(shí)體。,類,對(duì)象,抽象,實(shí)例化,封裝的實(shí)體=數(shù)據(jù)+方法,操作或行為,屬性或狀態(tài),方法,數(shù)據(jù)或變量,7,5.1.4 面向?qū)ο蟮幕咎卣?1.封裝:將數(shù)據(jù)成員(Data Member)和屬于此數(shù)據(jù)的操作方法(Operating Method),放在同一個(gè)實(shí)體(Entity)或?qū)ο笾小?2.繼承:父類定義(Define)一些通用的屬性與行為,其孩子繼續(xù)使用。 3.多態(tài):在同一個(gè)類中可有許多同名的方法,但其參數(shù)數(shù)量與數(shù)據(jù)類型不同,而且操作過程與返回值也可能會(huì)不同。,(1)模塊化 (2)信息隱藏,(1)實(shí)現(xiàn)代碼復(fù)用 (2)簡(jiǎn)化設(shè)計(jì)過程,解決其他語言中不能重名的問題,8,5
4、.2.1 類的定義,類的定義格式為:,類修飾符class name type variable1; type variableN; type methodname1(parameter-list) /方法體 type methodnameN(parameter-list) /方法體 ,成員變量(對(duì)象屬性),成員方法 (對(duì)象行為或操作),9,5.2.2 成員變量,作用范圍是整個(gè)類。與局部變量不同。 可以使用修飾符來控制變量的作用范圍。 格式:(=) 修飾符可以為: static:定義類變量,區(qū)分實(shí)例變量。 final:用來聲明常量,值只能用不能改。 transient:定義暫時(shí)性變量,串行化時(shí)不
5、能保存。 volatile:定義共享變量,用于多線程共享。,10,5.2.3 成員方法,定義方法的一般格式: access type methodname1(parameter-list) /方法體 ,public void setdt(int day,int month,int year) day=23; month=7; year=2003; ,11,5.2.4 類的對(duì)象,對(duì)象的聲明和創(chuàng)建 類名 對(duì)象名; /聲明 對(duì)象名=new 類名(參數(shù));/創(chuàng)建 (2)對(duì)象的使用 對(duì)象名.成員變量名; 對(duì)象名.成員方法名(參數(shù)列表); (3)對(duì)象的銷毀 自動(dòng)垃圾回收機(jī)制周期性的釋放無用的對(duì)象。,12,
6、類和對(duì)象實(shí)例,public class RectangleDemo double length; double width; void setL(double l,double w) length=l; width=w; double area() return length*width; public static void main(String args) RectangleDemo r1; r1=new RectangleDemo(); r1.setL(10,20); System.out.println(“area:”+r1.area(); ,13,5.2.5 構(gòu)造方法,構(gòu)造函數(shù)名稱
7、與類名稱相同 構(gòu)造函數(shù)沒有返回類型 其任務(wù)是在創(chuàng)建對(duì)象時(shí)初始化其內(nèi)部狀態(tài) 若無定義系統(tǒng)默認(rèn)有一個(gè)無參構(gòu)造方法,class Fruit boolean seedLess; boolean seasonal; float price; Fruit(boolean seed, boolean season, float p) seedLess = seed; seasonal = season; price = p; ,14,5.2.6 修飾符2-1,所有類A,所有子類C,包中類B 包中子 類E,本類D,15,5.2.6 修飾符2-2,用來說明類、方法或變量的類型。,16,5.2.7 靜態(tài)初始化,在
8、類加載時(shí),做一些起始動(dòng)作的程序塊。格式: static 程序塊; ,class StaticDemo boolean sex; String name; String type; static type=“學(xué)生”; float score; ,17,5.2.8 內(nèi)部類,1.靜態(tài)成員類 2.成員類 3.局部類 4.匿名類,18,5.2.9 類的使用,1.類對(duì)象作為類的成員 2.類對(duì)象作為方法的參數(shù) 3.方法返回值為類對(duì)象,19,5.3.1 類繼承的實(shí)現(xiàn)2-1,被繼承的類稱為父類 繼承父類的類稱為子類 執(zhí)行繼承時(shí),子類將獲得父類的屬性,并具有自身特有的屬性。,工人類,繼承了父 類的姓名和性別屬 性
9、外還包含類別和 是否有服裝津貼屬性,主任類,還包含 級(jí)別和是否配備 交通工具屬性,職員類,具 有姓名和性 別兩個(gè)屬性,20,5.3.1 類繼承的實(shí)現(xiàn)2-2,extends關(guān)鍵字用于繼承類。 聲明一個(gè)繼承父類的類的通常形式如下: class subclass-name extends superclass-name /類體 沒有extends,默認(rèn)父類為Object 只能有一個(gè)父類,即單繼承 子類繼承父類的全部成員,注意,21,5.3.2 this和super關(guān)鍵字,1.this的使用 (1)訪問當(dāng)前對(duì)象的數(shù)據(jù)成員 (2)訪問當(dāng)前對(duì)象的成員變量 (3)重載時(shí)用來引用同類的其他構(gòu)造方法 2.sup
10、er的使用 (1)訪問直接基類中被隱藏的數(shù)據(jù)成員 (2)調(diào)用直接基類中被重寫的成員方法 (3)調(diào)用直接基類的構(gòu)造方法,22,5.3.3 抽象類和抽象方法,定義目的是提供可由其子類共享的一般形式。 抽象類不能實(shí)例化。 抽象方法沒有函數(shù)體。 抽象方法必須在子類中給出具體實(shí)現(xiàn)。 抽象類中可以沒有抽象方法,有抽象方法的類一定是抽象類。 抽象類必須繼承,子類根據(jù)自身需要擴(kuò)展抽象類。 abstract不能和final疊用修飾類。 不能有private成員變量和方法。 不能和private、static、final疊用修飾方法。,23,5.3.4 類對(duì)象之間的類型轉(zhuǎn)換,子類對(duì)象和基類對(duì)象之間的轉(zhuǎn)換: (1)
11、子類對(duì)象可以隱式,也可以轉(zhuǎn)換為基類對(duì)象 (2)處于相同類層次的類對(duì)象之間不能進(jìn)行轉(zhuǎn)換 (3)子類對(duì)象在一定的條件下可以轉(zhuǎn)換成基類對(duì)象,但必須使用強(qiáng)制類型轉(zhuǎn)換。,24,5.4.1 方法重載,方法重載是Java實(shí)現(xiàn)面向?qū)ο蟮亩鄳B(tài)性機(jī)制的一種方式。 同一個(gè)類中多個(gè)方法有相同的名字,不同的參數(shù)列表,這種情況稱為方法重載。 返回類型不同并不足以構(gòu)成方法重載。 當(dāng)重載方法被調(diào)用時(shí),編譯器根據(jù)參數(shù)的類型和數(shù)量來確定實(shí)際調(diào)用哪個(gè)重載方法的版本。,25,5.4.2 方法重寫,方法重寫是Java實(shí)現(xiàn)多態(tài)性機(jī)制的另一種方式。 在類層次結(jié)構(gòu)中,如果子類中的一個(gè)方法與父類中的方法有相同的方法名并具有相同數(shù)量和類型的參數(shù)
12、列表,這種情況稱為方法重寫。 重寫方法通過父類引用被調(diào)用,Java根據(jù)當(dāng)前被引用對(duì)象的類型來決定執(zhí)行哪個(gè)版本的方法。 可通過super關(guān)鍵字調(diào)用直屬父類中被重寫的方法。 子類定義與父類同名的變量,使父類變量隱藏,但仍有自己的空間,在子類中可調(diào)用。 子類重寫父類方法,會(huì)清除父類空間,在子類中不存在。,26,5.5.1 接口的定義,修飾符 interface 接口名稱 public static final 變量名初值; /靜態(tài)常量 public abstract native返回值 方法名(參數(shù)表)throws 異常列表 /方法 由于接口中定義的方法都是抽象、公有的,常量都是靜態(tài)、公有的,所以修
13、飾符可以省略。,說明: (1)通常接口的名字以able或ible結(jié)尾; (2)可以使用extends來繼承接口的常量和抽象方法, 但它與類中的extends不同,它可以有多個(gè)父接口, 各父接口間用逗號(hào)隔開; (3)接口中的所有常量必須是public static final,方法 必須是public abstract,這是系統(tǒng)默認(rèn)的,不管你在定義 接口時(shí),寫不寫修飾符都是一樣的。 (4)native要甚用。,27,5.5.2 接口的實(shí)現(xiàn),在類的聲明中使用implements關(guān)鍵字來實(shí)現(xiàn)接口,一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,各接口間用“,”隔開。 class classname implements
14、 interfacename /重寫接口中的方法; ,說明: (1)若實(shí)現(xiàn)接口的類不是抽象類,則必須實(shí)現(xiàn)所有 接口的所有方法,即為所有的抽象方法定義方法體。 (2)一個(gè)類在實(shí)現(xiàn)某接口抽象方法時(shí),必須使用完 全相同的方法名,參數(shù)列表。 (3)接口的抽象方法的訪問控制符已指定為public, 所以類在實(shí)現(xiàn)時(shí),必須顯示的使用public修飾符,否 則被警告縮小了接口中定義的方法的訪問控制范圍。,28,實(shí)例:接口的定義和實(shí)現(xiàn),interface A double g=9.8; void show( ); class B implements A public void show( ) System.o
15、ut.println(“g=“+g); ,class InterfaceTest public static void main(String args ) B b=new B( ); b.show( ); ,29,5.5.3 接口的繼承,interface A int sub(int a,int b); interface B extends A int add(int a,int b); interface C extends B int mul(int a,int b); ,組合: interface A int sub(int a,int b); interface B int add
16、(int a,int b); interface C extends A,B int mul(int a,int b); ,30,5.5.4 接口的多態(tài),interface viecle abstract boolean start( ); class Car implements viecle boolean start( ) /發(fā)動(dòng)引擎 class Ship implements viecle boolean start( ) /拋錨 ,31,5.6.1 包的創(chuàng)建,(1)缺省情況下為無名包 (2)有名包的創(chuàng)建:使用package語句 如:package pname 或 package di
17、r1.dir2.pname 包就是一個(gè)文件夾,里面存放.class文件,包中的“.”號(hào)表示子文件夾。,32,5.6.2 包的引用,(1)使用包名、類名前綴 例如: mypack1.mypack2.Myclass (2)加載引用:使用import語句 格式:import mypack1.mypack2.Myclass 或 import mypack. mypack2.* (3)直接引用:在同一文件夾下,33,5.6.3 設(shè)置CLASSPATH環(huán)境變量,CLASSPATH變量指明“.class”文件存放的位置。 編譯時(shí):javac d CLASSPATH路徑 Myclass.java 例如:java
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- web開發(fā)面試題及答案
- 2025秋季浙江金華市義烏市昌德學(xué)校教師招聘?jìng)淇碱}庫及答案詳解一套
- 2026廣東佛山順德區(qū)杏壇伍蔣惠芳實(shí)驗(yàn)初級(jí)中學(xué)招聘臨聘教師6人備考題庫含答案詳解
- 2026廣東廣州期貨交易所招聘及博士后招收備考題庫及完整答案詳解1套
- 2026廣西來賓市忻城縣政務(wù)服務(wù)和大數(shù)據(jù)發(fā)展局招聘編外聘用人員2人備考題庫及完整答案詳解一套
- 2026云南昭通綏江縣農(nóng)業(yè)農(nóng)村局招聘城鎮(zhèn)公益性崗位工作人員的1人備考題庫有答案詳解
- 2026廣東佛山獅山鎮(zhèn)小塘第四幼兒園招聘2人備考題庫含答案詳解
- 2026安徽合肥市中央企業(yè)高性能綠色新材料助劑項(xiàng)目招聘?jìng)淇碱}庫及1套參考答案詳解
- 2025浙江臺(tái)州市溫嶺市第五人民醫(yī)院招聘1人備考題庫及答案詳解參考
- 2026年安康嵐皋縣公益性崗位人員招聘?jìng)淇碱}庫(3人)及答案詳解(易錯(cuò)題)
- 2026年河南農(nóng)業(yè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫含答案解析
- 2026年揚(yáng)州工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫含答案解析
- 2026年銅陵安徽耀安控股集團(tuán)有限公司公開招聘工作人員2名考試備考題庫及答案解析
- 安全帽使用規(guī)范制度
- 2025年醫(yī)療器械注冊(cè)代理協(xié)議
- 廣西壯族自治區(qū)職教高考英語學(xué)科聯(lián)考卷(12月份)和參考答案解析
- 2026年《必背60題》腫瘤內(nèi)科醫(yī)師高頻面試題包含答案
- 電荷轉(zhuǎn)移動(dòng)力學(xué)模擬-洞察及研究
- 2024–2025學(xué)年度第一學(xué)期期末卷 八年級(jí)歷史(試題)
- 神木市孫家岔鎮(zhèn)神能乾安煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 藥店質(zhì)量管理制度執(zhí)行情況檢查考核記錄表
評(píng)論
0/150
提交評(píng)論