Java面向?qū)ο蟪绦蛟O(shè)計案例教程課件:Java面向?qū)ο蟮奶卣鱛第1頁
Java面向?qū)ο蟪绦蛟O(shè)計案例教程課件:Java面向?qū)ο蟮奶卣鱛第2頁
Java面向?qū)ο蟪绦蛟O(shè)計案例教程課件:Java面向?qū)ο蟮奶卣鱛第3頁
Java面向?qū)ο蟪绦蛟O(shè)計案例教程課件:Java面向?qū)ο蟮奶卣鱛第4頁
Java面向?qū)ο蟪绦蛟O(shè)計案例教程課件:Java面向?qū)ο蟮奶卣鱛第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java面向?qū)ο蟮奶卣鳌禞ava

面向?qū)ο蟪绦蛟O(shè)計案例教程》教

標·

理解封裝性;·

掌握繼承的實現(xiàn)方法以及類成員的訪問和繼承原則·

理解抽象類和最終類的特點及使用場合·

掌握多態(tài)技術(shù)的具體形式與應(yīng)用·

理解接口的含義與作用,會使用接口進行簡單的程序設(shè)計·

了解Java的常用類庫包《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》5.1

裝●在面向?qū)ο蟪绦蛟O(shè)計方法中,封裝是指,一種將抽象性

函式接口的實作細節(jié)部份包裝、隱藏起來的方法。封裝

可以被認為是一個保護屏障,防止該類的代碼和數(shù)據(jù)被

外部類定義的代碼隨機訪問。要訪問該類的代碼和數(shù)據(jù)

,必須通過嚴格的接口控制。封裝是一種信息隱藏技術(shù)

,在java

中通過關(guān)鍵字private

實現(xiàn)封裝。·詳見教材例題5-1《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》5.2

承●繼承性反應(yīng)了類之間的一種關(guān)系。一個類可以繼承其他

類的所有成員,包括成員變量和成員方法,該類還可以

擁有自己的成員。被繼承的類稱之為父類,繼承后生成

的新類稱之為子類。父類和子類之間是集成管理,又稱

為派生關(guān)系?!ava語言僅支持單繼承,即每個子類只允許一個父類,

而不允許有多個父類。但是可以從一個父類中生成若干

個子類。繼承不改變成員變量的訪問權(quán)限,父類中的公

有成員、私有成員和保護成員,在子類中仍然是公有成

員、私有成員和保護成員。《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》5.2.1

繼承的實現(xiàn)●在講解繼承的基本概念之前,讀者可以先想一想這樣一

個問題:現(xiàn)在假設(shè)有一個Person類,里面有name

與age

兩個屬性,而另外一個Student

類,需要有name、age、school

三個屬性,如圖5-1所示,從這里可以

發(fā)現(xiàn)

Person

中已經(jīng)存在有name

和age

兩個屬性,所

以不希望在Student

類中再重新聲明這兩個屬性,這個

時候就需要考慮是不是可以將Person

類中的內(nèi)容繼續(xù)

保留到Student

類中,也就是引出了接下來所要介紹的

類的繼承概念。《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》圖5-1

Student類與Person類在

這里希望

Student

類能夠?qū)?/p>

Person

類的內(nèi)容繼承下來后繼續(xù)使用,可用圖5

-

2表示:Personname:String

age

:intPersonname

:Stringage

:int《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》圖5-2

Student類與Person類繼承關(guān)系Student*schoolStudent*school:String:String·Java類的繼承格式如下:·class

子類名extends

父類名·

{子類體}·

詳見教材例題5-2《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》5.2.2

子類對象的實例化過程·

詳見教材例題5-3,5-4,5-5《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》5.2.3

super關(guān)鍵字·從TestPersonStudentDemol中讀者應(yīng)該可以發(fā)現(xiàn),

super關(guān)

鍵字出現(xiàn)在子類中,而且是去調(diào)用了父類中的構(gòu)造方法,所

以可以得出結(jié)論:

super

主要的功能是完成子類調(diào)用父類中

的內(nèi)容,也就是調(diào)用父類中的屬性或方法。·

詳見教材例題5-6·

super關(guān)鍵字不僅可以調(diào)用父類中的構(gòu)造方法,也可以調(diào)用

父類中的屬性或方法,格式如下:·super.

父類中的屬性;·super.

父類中的方法();·

詳見教材例題5-7,5-8,5-9《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》5.3

抽象類和最終類·5.3.1

抽象類與抽象方法·

類是對現(xiàn)實世界中實體的抽象,但我們不能以相同的方法為現(xiàn)實世

界中所有的實體做模型,因為現(xiàn)實世界中大多數(shù)的類太抽象而不能

獨立存在。例如:我們不能給出一個通用的計算二維圖形面積的方法。·

定義抽象類的一般格式如下:·

[訪問限定符]abstract

class類名

·

//屬性說明●·//抽象方法聲明●·

//非抽象方法定義·}《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》·

類中允許定義抽象方法。所謂抽象方法,是指在類中僅

僅聲明了類的行為,并沒有真正實現(xiàn)行為的代碼,即只

有方法頭、沒有方法體的方法。聲明抽象方法的一般格

式如下:·

[訪問限定符]abstract數(shù)據(jù)類型方法名([參數(shù)列表]);·

:·abstractvoiddraw();//聲明類中的draw()方法為抽象方發(fā)法《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》·

有關(guān)抽象類和抽象方法的說明如下:1.

抽象類只能被繼承而不能創(chuàng)建具體對象,即不能被實例化。2.

抽象方法僅僅是為所有的派生子類定義一個統(tǒng)一的接口,方法

具體實現(xiàn)的程序代碼由各個派生子類來完成,不同的子類可以根

據(jù)自身的情況以不同的程序代碼實現(xiàn)。3.

抽象方法只能存在于抽象類中,

一個類中只要有一個方法是抽

,則這個類就是抽象的。4.

構(gòu)造方法、靜態(tài)(static)方法、最終(final)方法和私有(private)方

法都不能被聲明為抽象方法。詳見教材例題5-10《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》·5.3.2

最終類·

最終類是指不能被繼承的類。即最終類沒有子類。在Java語言中

,如果不希望某個類被繼承,可以聲明這個類為最終類。最終類

用關(guān)鍵字final來說明。例如:

publicfinalclassC就定義類C

為最終

類?!?/p>

如果沒有必要創(chuàng)建最終類,而又想保護類中的一些方法不被覆蓋

,可以用關(guān)鍵字final來指明那些不能被子類覆蓋的方法,這些方

法稱為最終方法。例如:·public

class

A

·

Public

final

void

f()

·}·

上例在類A中定義了一個最終方法f(),任何類A

的子類都不能覆

法f()?!禞ava面向?qū)ο蟪绦蛟O(shè)計案例教程》5.4

態(tài)·

多態(tài)是面向?qū)ο蟮闹匾匦?,簡單點說是“一個接口,

多種實現(xiàn)”,就是指同一種事物表現(xiàn)出多種形態(tài)。編程

其實就是一個將具體世界進行抽象化的過程,多態(tài)就是

抽象化的一種體現(xiàn),把一系列具體事物的共同點抽象出

來,再通過這個抽象的事物,與不同的具體事物進行對

話?!?/p>

多態(tài)是指一個方法只能有一個名稱,但可以有許多形態(tài)

,也就是程序中可以定義多個同名的方法。多態(tài)提供了

“接口與實現(xiàn)的分離”,將“是什么”與“怎么做”分

離出來。多態(tài)主要分為方法的覆蓋和方法的重載?!禞ava面向?qū)ο蟪绦蛟O(shè)計案例教程》5.4.1

方法的覆蓋·覆蓋是發(fā)生在子類繼承父類過程中,對原有變量或方法進行的覆

蓋操作,是Java

多態(tài)特性的一個重要體現(xiàn),表現(xiàn)在不用類之間子

類對父類方法的覆蓋,改變父類方法原有的行為和意義?!し椒ǜ采w:如果在子類中定義一個方法,其名稱、返回類型及參

數(shù)簽名正好與父類中某個方法的名稱、返回類型及參數(shù)簽名相匹

配,那么可以說,子類的方法覆蓋了父類的方法?!ぴ斠娊滩睦}5-11《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》5.4.2

方法的重載·

在Java中,同一個類中的兩個或兩個以上的方法可以有同一個名字,只要它們的參數(shù)聲明不同即可。在這種情況下,該方法被稱

為重載(Overloaded),

這個過程被稱為方法重載(MethodOverloaded)。方法重載是Java實現(xiàn)多態(tài)的一種方式?!?/p>

當一個重載方法被調(diào)用時,Java用參數(shù)的類型和(或)數(shù)量來表名實際調(diào)用的重載方法的版本。因此,每個重載方法的參數(shù)的類型

和(或)數(shù)量必須是不同的。雖然每個重載方法可以有不同的返回類型,但返回類型并不足以區(qū)分所使用的是哪個方法。當Java調(diào)用一個重載方法時,參數(shù)與調(diào)用參數(shù)匹配的方法被執(zhí)行?!禞ava面向?qū)ο蟪绦蛟O(shè)計案例教程》項目方法重載方法覆蓋(重寫)類的層次針對同一個類中的同名方法針對父類與子類中的同名方法方法名稱各重載方法的名稱必須完全相同被繼承與繼承的方法名稱必須完全相同返回值類型各重載方法的返回值的類型必須完全相同被繼承與繼承的方法的返回值的類型必須完全相

同參數(shù)類型各重載方法的參數(shù)類型可以不同被繼承與繼承方法的參數(shù)類型必須完全相同參數(shù)數(shù)目各重載方法的參數(shù)數(shù)目可以不同被繼承與繼承方法的參數(shù)數(shù)目必須完全相同表5-1

成員方法的重載與覆蓋的區(qū)別《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》詳見教材例題5-125.5

口5.5.1

接口的概念·在Java中接口是一個全部由抽象方法組成的集合,接口需要用interface定義,里面只能有抽象的方法和常量。接口體現(xiàn)的是事

物擴展的功能,在Java中,類定義了一個實體,包括實體的屬性

,實體的行為。而接口定義了一個實體可能發(fā)生的動作,只有一

個聲明,沒有具體的行為?!?/p>

當一個方法在很多類中有不同的體現(xiàn)是時候這個時候就可以將這

個方法抽象出來做成一個接口。接口里面只能有不可修改的全局

常量,只能有抽象的方法,接口沒有構(gòu)造方法?!禞ava面向?qū)ο蟪绦蛟O(shè)計案例教程》5.5.2

接口的定義·

接口的定義格式如下:·

[public]interface

接口名[extends父接口列表]//接口聲明·

{//接口體開始·

//常量數(shù)據(jù)成員的聲明及定義·數(shù)據(jù)類型

常量名=常數(shù)值;●·

//聲明抽象方法·

返回值類型方法名([參數(shù)列表])[throw

異常列表];●·

}//接口體結(jié)束《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》·

:●定義接口時使用interface

定義,區(qū)別于抽象類,不需要

class。●接口不能被實例化,不能直接創(chuàng)建對象,因為接口里面

只有抽象的方法,沒有具體的功能?!窠涌诳梢岳^承接口,接口要實現(xiàn)具體的功能必須有實現(xiàn)

他的子類,實現(xiàn)接口的子類中必須重寫接口全部的抽象

?!そ涌诤徒涌谥g可以多繼承?!そ涌诘淖宇惪梢允浅橄箢?,但是沒有實際的意義?!?/p>

一個子類可以實現(xiàn)多個接口,通過implements

關(guān)鍵字去

現(xiàn)

?!窠涌谛枰ㄟ^多態(tài)才能創(chuàng)建對象。《Java

面向?qū)ο蟪绦蛟O(shè)計案例教程》5.5.3

接口的實現(xiàn)·

接口的實現(xiàn),即在實現(xiàn)接口的類中重寫接口中給出的所有方法,

書寫方法體代碼,完成方法所規(guī)定的功能。實現(xiàn)接口類的一般格

式如下:·

[訪問限定符][修飾符]class

類名[extends

父類名

]implements

接口名列表·

{//類體開始標志·

[類的成員變量說明]

//屬性說明·

[類的構(gòu)造方法定義]

·

[類的成員方法定義]

·

/*重寫接口方法*/·接口方法定義

//實現(xiàn)接口方法

·}·

下面舉例說明接口的實現(xiàn)。教材例題5-13《Java面向?qū)ο蟪绦蛟O(shè)計案例教程》5.6package關(guān)鍵字和包5.6.1

包的概念Java中

包package,

就是電腦中的文件夾。我們平時在

工作中,文件太多時,都會新建文件夾進行分類管理,java

中的包也是類似的道理,當我們的類太多時,也需

要進行分類管理,這時我們就會把類文件放到包中,就是

把這個.class

文件放到了一個文件夾中,這樣也能有效地

避免了命名沖突?!禞ava

面向

溫馨提示

  • 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

提交評論