第四課《類的定義擴展及繼承》1省公開課金獎全國賽課一等獎微課獲獎課件_第1頁
第四課《類的定義擴展及繼承》1省公開課金獎全國賽課一等獎微課獲獎課件_第2頁
第四課《類的定義擴展及繼承》1省公開課金獎全國賽課一等獎微課獲獎課件_第3頁
第四課《類的定義擴展及繼承》1省公開課金獎全國賽課一等獎微課獲獎課件_第4頁
第四課《類的定義擴展及繼承》1省公開課金獎全國賽課一等獎微課獲獎課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四課《類定義擴展及繼承》11/36?iSoftStoneHoldingsLtd.AllRightsReserved.2目標掌握面向對象編程概念掌握怎樣創(chuàng)建類和結構對象掌握對象組員變量和方法了解this關鍵字2/36軟件開發(fā)生命周期普通來說,軟件開發(fā)都要經(jīng)歷下面幾個過程:1、軟件分析:主要是了解用戶需求2、軟件設計:確定軟件整體架構。把一個大系統(tǒng)劃分

為若干小子系統(tǒng),并設計每個子系統(tǒng)詳細結構。3、軟件編碼:用選定語言來完成詳細軟件設計內容。4、軟件測試:測試軟件是否能完全實現(xiàn)設計功效,并測

試軟件運行性能。5、軟件布署:為用戶安裝軟件系統(tǒng),幫助用戶正確使用

軟件。6、軟件維護:修復軟件運行期產生bug,并依據(jù)用戶需

求改變,修改軟件對應功效。?iSoftStoneHoldingsLtd.AllRightsReserved.33/36優(yōu)異軟件系統(tǒng)特點為了提升軟件開發(fā)效率,降低軟件開發(fā)成本,一個良好軟件系統(tǒng)應該含有以下特點:1、可重用性:降低軟件中重復代碼,防止重復編程。2、可擴展性:當軟件必須增加新功效時,能夠在現(xiàn)有系統(tǒng)結構基礎上,方便創(chuàng)建新子系統(tǒng),而不用去修改現(xiàn)有軟件結構,不影響已經(jīng)有子系統(tǒng)正常使用。3、可維護性:當用戶需求發(fā)生改變時,只需要修改局部子系統(tǒng)少許代碼,而不會牽一發(fā)而動全身。那怎樣才能使我們開發(fā)軟件系統(tǒng)含有這些特點呢??iSoftStoneHoldingsLtd.AllRightsReserved.44/36開發(fā)良好軟件系統(tǒng)我們能夠把一個大系統(tǒng)分解為若干子系統(tǒng),每個子系統(tǒng)相對獨立。把這些獨立子系統(tǒng)象搭積木一樣靈活組裝在一起,成為一個完整系統(tǒng)。這么軟件系統(tǒng)就會含有我們前面所說那些優(yōu)點軟件中子系統(tǒng)一樣要含有一些特點:1、結構穩(wěn)定性:子系統(tǒng)設計合理,結構健壯,能夠適用

用戶需求改變。2、可擴展性:當軟件必須增加新功效時,可在現(xiàn)有子

系統(tǒng)基礎上創(chuàng)建出新子系統(tǒng),該子系統(tǒng)繼承了原

有子系統(tǒng)一些特征,而且還含有一些新特征,從

而提升軟件可重用性和可擴展性。?iSoftStoneHoldingsLtd.AllRightsReserved.55/36開發(fā)良好軟件系統(tǒng)3、內聚性:每個子系統(tǒng)只完成特定功效,不一樣子系統(tǒng)

之間不會有功效疊加。子系統(tǒng)內聚性會提升軟件

可重用性和可維護性。4、可組合性:各個子系統(tǒng)能夠靈活組裝在一起,形成

一個大完整系統(tǒng)。該特征能夠提升軟件可重用

性和可維護性,并簡化軟件開發(fā)過程。5、松耦合:子系統(tǒng)之間相互獨立,修改其中一個子系統(tǒng)

,不會影響到其它子系統(tǒng)。當用戶需求發(fā)生改變時,

只需要修改特定子系統(tǒng)代碼,從而提升了軟件可

維護性。?iSoftStoneHoldingsLtd.AllRightsReserved.66/36軟件開發(fā)方法當前在軟件開發(fā)領域有兩種主流開發(fā)方法:1、面向過程軟件開發(fā)

傳統(tǒng)開發(fā)方法,早期開發(fā)語言比如:c、basic、pascal都是面向過程。2、面向對象軟件開發(fā)

為了提升軟件可重用性、可維護性和可擴展性,面向對象開發(fā)方式應運而生。JAVA就是純面向對象開發(fā)語言。?iSoftStoneHoldingsLtd.AllRightsReserved.77/36面向過程軟件開發(fā)采取自頂向下設計方式,在把一個大系統(tǒng)分解為若干子系統(tǒng)時候,就不得不去考慮詳細實現(xiàn)方式。因為分解功效過程就是實現(xiàn)功效過程。當用戶需求發(fā)生改變時,就需要自頂之下去修改,甚至有時候,需要把原來設計全部推翻重來。?iSoftStoneHoldingsLtd.AllRightsReserved.88/36面向對象軟件開發(fā)這種開發(fā)方法把系統(tǒng)看成是對象集合。對象就是最小子系統(tǒng)。它含有以下一些優(yōu)點:1、把軟件系統(tǒng)看成是對象集合,更靠近于人思維方式。2、軟件需求變動往往是功效變動,而功效執(zhí)行者---對象普通不會有大變動,這使得按照對象設計出來系統(tǒng)結構比較穩(wěn)定。3、支持封裝、繼承、多態(tài)和抽象等特征,提升了系統(tǒng)可維護性、可重用性和可擴展性。?iSoftStoneHoldingsLtd.AllRightsReserved.99/36什么是對象問:那什么是對象呢?答:萬物皆對象。現(xiàn)實世界中任何實體和概念都能夠抽象為對象。比如說我們學校:學生、老師、教室、機房、設備、辦公大樓、書本等等都是對象。在比如說銀行:賬單、出納員、支票、匯率、現(xiàn)金、驗鈔機等也都是對象。?iSoftStoneHoldingsLtd.AllRightsReserved.1010/36對象特征1、每個對象都是唯一。對象唯一性起源于真實世界中事物唯一性。在JAVA中,確保對象唯一性方法就是為這個對象在內存中分配唯一地址。2、對象都含有屬性和行為。比如人屬性有:身高、體重、年紀、性別等。行為有:吃飯、睡覺、唱歌、打球等3、對象都含有狀態(tài)。(指屬性而言)

比如每個人都有共同屬性是身高,不過每個人這個屬性是不一樣3、對象都屬于某一個類。

比如中國和美國都屬于國家這個類別。

汽車和自行車都屬于交通工具這個類別。

男人和女人都屬于人類。問:什么是類。?iSoftStoneHoldingsLtd.AllRightsReserved.1111/36?iSoftStoneHoldingsLtd.AllRightsReserved.12什么是類類實際上是對某種類型對象定義變量和方法原型。(類就是一組含有相同屬性和行為對象集合。)一個對象是類一個實例。有了類,才能夠創(chuàng)建對象。類不能是它們描述對象本身,類是同一個對象集合抽象,即,同一類對象變量和方法原型。

variablesmethods12/36?iSoftStoneHoldingsLtd.AllRightsReserved.13面向對象編程classCar{intcolor_number;intdoor_number;

intspeed;

voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}

計算機中對象原型現(xiàn)實生活中對象13/36?iSoftStoneHoldingsLtd.AllRightsReserved.14面向對象三個特征封裝(encapsulation)

(比如說發(fā)動機)繼承(Inheritance)多態(tài)(Polymorphism)14/36?iSoftStoneHoldingsLtd.AllRightsReserved.15面向對象程序設計

從程序設計角度看,類是面向對象程序中最基本程序單元。類實質上定義是一個數(shù)據(jù)類型,這種數(shù)據(jù)類型就是對象類型。所以我們能夠使用類名稱來申明對象變量。申明對象變量之后,還不能使用對象。必須用運算符new創(chuàng)建對象實體之后,才能使用對象。15/36?iSoftStoneHoldingsLtd.AllRightsReserved.16類定義[修飾符]

class

類名[繼承父類][接口]{

組員變量; 結構函數(shù); 組員方法;}每個源代碼文件只能有一個public類;文件名必須與public類名相同;TestClass.java16/36?iSoftStoneHoldingsLtd.AllRightsReserved.17創(chuàng)建對象使用以下語法可創(chuàng)建對象:

new結構函數(shù)關鍵字new通常稱為創(chuàng)建運算符,用于分配對象內存,并將該內存初始化為缺省值。一旦new完成份配和初始化內存,它就將調用結構函數(shù)來執(zhí)行對象初始化。TestNew.java當創(chuàng)建一個類時,只是創(chuàng)建了一個新數(shù)據(jù)類型。對象是類一個實例。17/36?iSoftStoneHoldingsLtd.AllRightsReserved.18new1、第一步,你必須申明該類類型一個變量,這個變量沒有定義一個對象。實際上,它只是一個能夠引用對象簡單變量。2、第二步,該申明要創(chuàng)建一個對象實際物理拷貝,并把對于該對象引用賦給該變量。這是經(jīng)過使用new運算符實現(xiàn)。new運算符為對象動態(tài)分配(即在運行時分配)內存空間,并返回對它一個引用。這個引用或多或少是new分配給對象內存地址。然后這個引用被存放在該變量中。所以,在Java中,全部類對象都是動態(tài)分配。

18/36?iSoftStoneHoldingsLtd.AllRightsReserved.19示例:classBox{ double_width; double_height; double_long; } classBoxDemo2{ publicstaticvoidmain(Stringargs[]){ Boxmybox1=newBox(); doublevol; mybox1._width=10; mybox1._height=20; mybox1._long=15; vol=mybox1._width*mybox1._height*mybox1._long; System.out.println("Volumeis"+vol); } }實例:BoxDemo.java19/36?iSoftStoneHoldingsLtd.AllRightsReserved.20圖解:20/36?iSoftStoneHoldingsLtd.AllRightsReserved.21給對象引用變量賦值比如:下面程序段是做什么呢?

Boxb1=newBox();Boxb2=b1;b1和b2將引用一樣對象。將b1賦值給b2并沒有分配任何內存或對原對象做任何部分拷貝。因為它們是同一個對象,所以經(jīng)過變量b2對對象改變也將影響b1所對應對象b1=null;//b1被設置為空,不過b2依然指向原來對象。21/36對象生命周期對象生命開始于被創(chuàng)建時候,也就是new時候。

Classc=newClass();當一個對象沒有任何變量去引用它時候,我們說這個對象已經(jīng)是垃圾對象了。

c=null;?iSoftStoneHoldingsLtd.AllRightsReserved.2222/36?iSoftStoneHoldingsLtd.AllRightsReserved.23結構函數(shù)結構函數(shù)是類一個特殊方法,主要表現(xiàn):(1)結構函數(shù)方法名與類名相同。(2)結構函數(shù)沒有返回類型。(3)結構函數(shù)主要作用是完成對類對象初始化工作。(4)結構函數(shù)不能由編程人員顯式地直接調用。(5)在創(chuàng)建一個類新對象同時,系統(tǒng)會自動調用該類結構函數(shù)為新對象初始化。23/36?iSoftStoneHoldingsLtd.AllRightsReserved.24結構函數(shù)定義classBox{doublewidth;doubleheight;doubledepth;

Box(){ System.out.println("ConstructingBox"); width=10; height=10; depth=10; }

doublevolume(){returnwidth*height*depth;}}24/36?iSoftStoneHoldingsLtd.AllRightsReserved.25默認結構函數(shù)默認結構函數(shù)指沒有參數(shù)結構函數(shù)假如編寫類沒有結構函數(shù),系統(tǒng)會自動提供一個默認結構函數(shù),它把全部屬性設為默認值

25/36?iSoftStoneHoldingsLtd.AllRightsReserved.26帶參數(shù)結構函數(shù)classBox{doublewidth,height,depth;//有參數(shù)結構函數(shù)

Box(doublew,doubleh,doubled){ width=w; height=h; depth=d;}}調用:Boxmybox1=newBox(10,20,15);Boxmybox2=newBox(3,6,9);實例:TestDefaultConstruct.java26/36?iSoftStoneHoldingsLtd.AllRightsReserved.27初始化塊Java中有三種初始化屬性方式:申明中賦值在結構函數(shù)中設置值初始化塊這種機制并不是必須,而且也不常見。27/36?iSoftStoneHoldingsLtd.AllRightsReserved.28初始化塊示例publicclassExample{ inta,b;

{ a=11; b=22; } publicExample(){ a=10; b=20; }}28/36?iSoftStoneHoldingsLtd.AllRightsReserved.29靜態(tài)初始化塊

static { //語句組

}

功效:完成初始化工作。TestInit.java29/36?iSoftStoneHoldingsLtd.AllRightsReserved.30初始化器結構函數(shù)區(qū)分結構函數(shù)是對每個新創(chuàng)建對象初始化,而靜態(tài)初始化器是對類本身進行初始化;結構函數(shù)是在用new運算符產生新對象時由系統(tǒng)自動執(zhí)行,而靜態(tài)初始化器則是在它所屬類加載入內存時有系統(tǒng)調用執(zhí)行。靜態(tài)初始化器不是方法,沒有方法名,參數(shù)表。

30/36?iSoftStoneHoldingsLtd.AllRightsReserved.31方法

方法是類主要組成部分。在一個類中,程序作用表達在方法中。方法是Java語言基本構件。利用方法能夠組成結構良好程序。本章介紹方法組成規(guī)則和設計、使用方法基本關鍵點。31/36?iSoftStoneHoldingsLtd.AllRightsReserved.32方法申明普通方法申明能夠含有以下形式:[訪問控制符][修飾符]返回類型方法名(參數(shù)表)[throws異常類名表]{……//方法體}

如:Doublesalery;PublicvoidaddSalery(doublesal){//方法執(zhí)行體salery+=sal;}修飾符返回類型方法名參數(shù)列表32/36?iSoftStoneHoldingsLtd.AllRightsReserved.33方法調用

方法是類一個動態(tài)屬性,先創(chuàng)建類一個實例對象,經(jīng)過對象.方法名來調用方法如:

publicclassEmployee{publicvoidshow(){System.out.println(“Hello”);}publicstaticvoidmain(String[]args){Employeee=newEmployee();e.show();

溫馨提示

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

評論

0/150

提交評論