Java課件 第五講面向?qū)ο蠡靖拍頮第1頁
Java課件 第五講面向?qū)ο蠡靖拍頮第2頁
Java課件 第五講面向?qū)ο蠡靖拍頮第3頁
Java課件 第五講面向?qū)ο蠡靖拍頮第4頁
Java課件 第五講面向?qū)ο蠡靖拍頮第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第5講講 面向?qū)ο蟪绦蛟O(shè)計(jì)基本概念面向?qū)ο蟪绦蛟O(shè)計(jì)基本概念1. 對象對象2. 類類3. 封裝封裝4. 繼承繼承5. 多態(tài)多態(tài)6. 多重繼承多重繼承7. 接口接口8. 包包對象(對象(object)n我們可以把生活所在的真實(shí)世界(我們可以把生活所在的真實(shí)世界(Real World)當(dāng)作是由許多大小不同的對象所組成的。當(dāng)作是由許多大小不同的對象所組成的。n對象可以是有生命的個體。對象可以是有生命的個體。對象對象 n對象也可以是無生命的個體。n對象也可以是一件抽象的概念。對象的特征對象的特征 n對象有兩個特征:狀態(tài)(state)和行為(behavior)。例如:一個人有他的身高或體重作狀態(tài),并有他

2、的行為如唱歌、打球、騎摩托車、開汽車。一只狗有它的顏色作狀態(tài),也有它的行為,如吠叫或跳躍。n而在程序設(shè)計(jì)中,軟件對象的概念由真實(shí)世界對象而來。面向?qū)ο蟪绦蛟O(shè)計(jì)中,軟件對象將狀態(tài)保存在變量(variables)或稱數(shù)據(jù)字段(data field)里,而行為則借助方法(methods)來實(shí)現(xiàn) 。data field 1data field nmethod 1method n數(shù)據(jù)字段(狀態(tài))方法(行為)軟件對象的定義軟件對象的定義 data field 1data field nmethod 1method n變量(數(shù)據(jù)字段)方法定義:對象是由變量(數(shù)據(jù)字段)及相關(guān)方法所組成的軟件包(softwar

3、e bundle) 汽車對象汽車對象 n以汽車為例,我們可定義其狀態(tài)與方法如下: 換檔開大燈剎車開冷氣顏色排檔數(shù)排氣量輪胎型號OOP三大特性:封裝、繼承與多態(tài)三大特性:封裝、繼承與多態(tài)封裝封裝data field 1data field nmethod 1method n變量(數(shù)據(jù)字段)方法封裝封裝n封裝用來將對其他對象不是重要的實(shí)行細(xì)節(jié)隱藏起來。nOOP將數(shù)據(jù)成員(Data Member)和屬于此數(shù)據(jù)的操作方法(operating method),都放在同一個實(shí)體(entity)或稱對象(object)中,這就是所謂的封裝。 封裝封裝 n封裝的用意,是避免數(shù)據(jù)成員被不正當(dāng)?shù)拇嫒?,以達(dá)到信息隱

4、藏(information hiding)的效果,避免錯誤的存取發(fā)生。封裝的好處:n1.模塊化(modularity):一個對象的原始文件可以獨(dú)立地被撰寫及維護(hù)而不影響其他對象。而且對象可以輕易地在系統(tǒng)中來回地傳遞使用。n2.信息隱藏(information hiding):一個對象可以和其他的對象之間進(jìn)行溝通,但該對象仍然維持私有的信息及方法,這些信息及方法可以在任何時間被修改,而不影響那些依賴于該對象的其他對象。 消息消息 (message) n軟件對象是通過傳送消息給其他對象來達(dá)到交互及溝通的目的。如下圖所示: data field 1data field nmethod nmethod

5、 1對象A對象B消息消息消息 (message)n 一個消息是由3個元素所組成: 1.消息目標(biāo)對象(你的汽車)。 2.執(zhí)行方法的名字(換檔)。 3.執(zhí)行方法所需用的參數(shù)(低、高速檔)。 如:g.drawString(“ 你好Java!”,50,50);類類 (class)n在真實(shí)世界里,有許多同“種類”的對象。而這些同“種類”的對象可被歸類為一個“類”。動物類汽車類實(shí)例實(shí)例 (instance)n你的汽車只是這世界中許多汽車中的一個。我們就稱你的汽車對象是汽車類中的一個實(shí)例(instance)。 汽車類class實(shí)例instancenew你的車軟件對象藍(lán)圖軟件對象藍(lán)圖類類 (class)n在面

6、向?qū)ο筌浖O(shè)計(jì)里,也可以利用此原理來制造一些軟件對象藍(lán)圖。這些軟件對象藍(lán)圖就稱作類(class)。 定義:一個類就是一個藍(lán)圖或原型,定義了定義:一個類就是一個藍(lán)圖或原型,定義了通用于一特定種類的所有對象之變量及方法。通用于一特定種類的所有對象之變量及方法。 軟件對象藍(lán)圖軟件對象藍(lán)圖類類 (class)換檔開大燈剎車開冷氣顏色排檔數(shù)排氣量輪胎型號data field 1data field nmethod 1method n私用數(shù)據(jù)細(xì)節(jié)公用方法對象(實(shí)例)的產(chǎn)生對象(實(shí)例)的產(chǎn)生new關(guān)鍵字關(guān)鍵字 n類就好比一個藍(lán)圖。那實(shí)例(instance)就是從一種類里所產(chǎn)生具有此類的狀態(tài)(變量)與行為(方

7、法)的真實(shí)對象。在面向?qū)ο蟪绦蛟O(shè)計(jì)里是用“new”這個關(guān)鍵字來產(chǎn)生實(shí)例。類實(shí)例1實(shí)例2實(shí)例3newnewnew藍(lán)圖真實(shí)對象例:JOptionPane jop;jop=new JOptionPane();類變量類變量&類方法類方法 n所謂的類變量(靜態(tài)變量)、類方法(靜態(tài)方法),指的是用“static”修飾的變量、方法。其地位與類等同。在內(nèi)存中只有一個地方存放。當(dāng)系統(tǒng)在程序中第一次遇到一個類時,便會拷貝一份所有的類變量在內(nèi)存里。然后那些屬于此類的實(shí)例便分享這些類變量。因此,你可以直接利用類來存取類變量和類方法,而不用將類實(shí)例化后才取用。實(shí)例變量實(shí)例變量&實(shí)例方法實(shí)例方法 n當(dāng)你從一種類產(chǎn)生一個實(shí)

8、例時,就等于制造了一個對象。而實(shí)例產(chǎn)生后,便擁有與類“同類型”但內(nèi)存地址不同的變量(除了類變量外),稱之為實(shí)例變量(instance variables)。n每個實(shí)例各自擁有自己的變量,而系統(tǒng)就會為這些實(shí)例變量個別配置內(nèi)存。n但實(shí)例方法卻仍留在類里,并不會再復(fù)制到實(shí)例中。但你仍可以調(diào)用這些方法來令實(shí)例對象做些事。實(shí)例方法指的是那些并沒有用static修飾符的methods。繼承繼承 (inheritance) nOOP便是以類來定義一個對象的。當(dāng)我們要使用一個對象(的變量或方法)時,首先要想到它是屬于哪一種類的。不僅對象是以類來定義,更進(jìn)一步地,類也可以用其他類來定義,現(xiàn)以下圖來說明:汽車類轎

9、車巴士出租車?yán)^承繼承 (inheritance)n這樣在父類中只定義一些通用的狀態(tài)與實(shí)現(xiàn)部分的行為,到了子類中才實(shí)現(xiàn)細(xì)節(jié),我們稱此父類為抽象類(abstract class)。n在抽象類中只定義一些狀態(tài),和實(shí)現(xiàn)少部分行為。這樣其他的程序設(shè)計(jì)師就可依照他們所要的特定子類進(jìn)行實(shí)現(xiàn)與定義。類層級類層級(class hierarchy) n類繼承關(guān)系可不僅只是一層關(guān)系而已,它可以有好幾層。這種樹狀關(guān)系,我們可稱作類層級(class hierarchy)。至于層級數(shù)可依照實(shí)際需要而定 。 Root Class繼承的產(chǎn)生繼承的產(chǎn)生extends 關(guān)鍵字關(guān)鍵字 n例如: public class Hello

10、World extends Appletn繼承的好處: 1.重復(fù)利用父類程序代碼。這樣在撰寫子類時,只要針對其所需的特別狀態(tài)與行為來寫即可。提高程序撰寫的效率。 2.先寫出定義好卻尚未實(shí)現(xiàn)的抽象父類,可使得在設(shè)計(jì)子類時,簡化設(shè)計(jì)過程,只要將定義好的方法填滿即可。this與與super關(guān)鍵字關(guān)鍵字 nthis與super分別指著有繼承關(guān)系的子、父類。nthis出現(xiàn)在程序代碼中,指的是所在的該類對象。super指的是所繼承的父類對象。nthis與super 均不用先聲明即可自行使用。方法覆蓋方法覆蓋 (method overriding) n覆蓋的意思是不用考慮父類的方法是如何寫的,只要重新定義改

11、寫,就可“蓋”過去。method xxxmethod xxx父類子類多態(tài)多態(tài) (polymorphism) n在同一個類中可有許多同名的方法,但其參數(shù)數(shù)量與類型不同,而且運(yùn)作過程與回傳值也可能會不同,這就是我們所謂的多態(tài)。構(gòu)造函數(shù)構(gòu)造函數(shù) (constructors) n構(gòu)造函數(shù)是一種特別的類方法,其命名與類同名,但不具有回傳值??山邮芏喾N類型、數(shù)量的傳入?yún)?shù),然后做不同的運(yùn)算。n構(gòu)造函數(shù)通常用于初始值設(shè)置。例如java.lang包中的String類里,有多種的構(gòu)造函數(shù): String() String(byte bytes) String(byte ascii, int hibyte) St

12、ring(byte bytes, int offset, int length) String(byte ascii, int hibyte, int offset, int count) String(byte bytes, int offset, int length, String enc) String(byte bytes, String enc) String(char value) String(char value, int offset, int count) String(String value) String(StringBuffer buffer)方法重載方法重載(m

13、ethod overloading)n所謂的方法重載,是指調(diào)用一個類中具有同名異式方法,但在執(zhí)行時期(run-time)才根據(jù)其參數(shù)數(shù)量與類型來判斷要調(diào)用此方法的哪一種operation。例:nAccount.javanCheckingAccount.javaJava OOP的其他重要特性多重繼承多重繼承(multi-inheritance) n一個對象可以隸屬于數(shù)種不同的類。這種多元性的繼承關(guān)系就叫做多重繼承 。 父親類丈夫類主管類營業(yè)車類小客車類汽油車類注意:Java不支持多重繼承接口 (interface )nInterface 這個英文字的意思是一種裝置或系統(tǒng),使得不同性質(zhì)的實(shí)體(entities)能夠交互地運(yùn)作。n而在Java里,設(shè)計(jì)接口的用意,是可使得類不必受限于單一繼承的關(guān)系,而可靈活地同時繼承一些共有的特性,達(dá)到多重繼承的目的,而免去C+中多重繼承的復(fù)雜關(guān)系所產(chǎn)生的問題 。汽車類自用車營業(yè)車小車大車汽油車柴油車轎車出租車巴士父類接口子類接口的實(shí)現(xiàn)接口的實(shí)現(xiàn)implements關(guān)鍵字關(guān)鍵字 n使用implements關(guān)鍵字,可使類能同時實(shí)現(xiàn)多種接口。n例如: public class JApplet_1 extends Applet implements AppletContext,AudioClip; 包包(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論