點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程第六章匯總、
6.9 設(shè)計(jì)類
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,一個(gè)基本的問(wèn)題就是決定在你的程序中各個(gè)類之間的相互關(guān)系。一種可能性是從你已經(jīng)定義的基類派生出若千個(gè)類來(lái),以建立一個(gè)類的結(jié)構(gòu)層次,并為特定的子類增加方法和數(shù)據(jù)成員。我們的Animal類和由它派生出來(lái)的子類就是這樣一個(gè)例子。另一種可能性是定義一套類,它們沒(méi)有結(jié)構(gòu)層次關(guān)系,但是,有一些屬于它們自己的類對(duì)象的數(shù)據(jù)成員。例如,Zoo類可能就有一個(gè)從Animal類派生的類對(duì)象作為成員。你可以有包含數(shù)據(jù)成員為類對(duì)象的類結(jié)構(gòu),其實(shí)我們已經(jīng)在類Animal中接觸過(guò)這種情況,它有一個(gè)String類型的成員。到目前為止,這些例子選擇的方式都比較明確,但并不是總會(huì)這樣地明顯。你常常需要在把一個(gè)類作為層次結(jié)構(gòu)中的一個(gè)類定義,還是作為一個(gè)類對(duì)象的成員的類定義之間進(jìn)行選擇。采用哪種方式最好呢?
與所有這類問(wèn)題一樣,沒(méi)有一個(gè)明確的答案。如果面向?qū)ο蟪绦蛟O(shè)計(jì)是一個(gè)過(guò)程,而這個(gè)過(guò)程可以通過(guò)你只需盲目遵守的一套固定的規(guī)則來(lái)進(jìn)行說(shuō)明,那么我們就可以把它提交給計(jì)算機(jī)完成這些事情。盡管有一些準(zhǔn)則,但可能解答中的內(nèi)容可能更明顯。
除了反映對(duì)象類型之間的現(xiàn)實(shí)世界關(guān)系的需求以外,使用多態(tài)性(或者我們?cè)诓痪镁蜁?huì)看到的接口)也是使用子類的一個(gè)主要原因。這是面向?qū)ο蟪绦蛟O(shè)計(jì)的精華,能夠被等效處理的一堆相關(guān)的對(duì)象可以極大地簡(jiǎn)化你的程序。你已經(jīng)看到如何從一個(gè)公共的基類Animal派生出來(lái)的類獲得指定的各種動(dòng)物類型,這將使我們可以對(duì)不同類型的動(dòng)物進(jìn)行處理,而它們就好像是同一種類型。產(chǎn)生的不同結(jié)果將取決于目前正在處理的動(dòng)物類型,所有這些完全都是自動(dòng)地。
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |