




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)(object oriented programming)簡稱簡稱(oop),是一種新興的程序設(shè)計(jì)方法,其基本思想是使,是一種新興的程序設(shè)計(jì)方法,其基本思想是使用對(duì)象、類、繼承、封裝、消息等基本概念來進(jìn)行程序設(shè)計(jì)。用對(duì)象、類、繼承、封裝、消息等基本概念來進(jìn)行程序設(shè)計(jì)。類是類是java程序中的最基本構(gòu)件,即程序中的最基本構(gòu)件,即java程序是一大堆類的程序是一大堆類的集合。集合。下一頁項(xiàng)目項(xiàng)目3 java面向?qū)ο缶幊堂嫦驅(qū)ο缶幊添?xiàng)目項(xiàng)目3 java面向?qū)ο缶幊堂嫦驅(qū)ο缶幊?.1 項(xiàng)目概述項(xiàng)目概述3.2 項(xiàng)目目的項(xiàng)目目的3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.4 項(xiàng)目實(shí)
2、施項(xiàng)目實(shí)施3.5 項(xiàng)目總結(jié)項(xiàng)目總結(jié)3.6 擴(kuò)展訓(xùn)練擴(kuò)展訓(xùn)練3.1 項(xiàng)目概述項(xiàng)目概述在本項(xiàng)目中主要學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想和面向?qū)υ诒卷?xiàng)目中主要學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想和面向?qū)ο蟮母拍?,類的定義,成員變量和成員方法的定義及使用,象的概念,類的定義,成員變量和成員方法的定義及使用,對(duì)象的創(chuàng)建和使用,類的繼承和多態(tài),訪問控制和修飾符,對(duì)象的創(chuàng)建和使用,類的繼承和多態(tài),訪問控制和修飾符,抽象類、接口和包的聲明及實(shí)現(xiàn)方法。抽象類、接口和包的聲明及實(shí)現(xiàn)方法。返回3.2 項(xiàng)目目的項(xiàng)目目的掌握創(chuàng)建和使用類對(duì)象、使用包的基本方法。掌握創(chuàng)建和使用類對(duì)象、使用包的基本方法。.理解繼承和復(fù)用的概念。理解繼
3、承和復(fù)用的概念。.了解接口的聲明及實(shí)現(xiàn)方法。了解接口的聲明及實(shí)現(xiàn)方法。.理解多態(tài)性是如何擴(kuò)充和維護(hù)系統(tǒng)性能。理解多態(tài)性是如何擴(kuò)充和維護(hù)系統(tǒng)性能。返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)面向?qū)ο笫且环N新興的程序設(shè)計(jì)方法,或者是一種新的程序面向?qū)ο笫且环N新興的程序設(shè)計(jì)方法,或者是一種新的程序設(shè)計(jì)規(guī)范設(shè)計(jì)規(guī)范(paradigm),其基本思想是使用對(duì)象、類、繼承、,其基本思想是使用對(duì)象、類、繼承、封裝、消息等基本概念來進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀封裝、消息等基本概念來進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物存在的事物(即對(duì)象即對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)造出發(fā)來構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)造中盡
4、可能運(yùn)用人類的自然思維方式。開發(fā)一個(gè)軟件是為了解中盡可能運(yùn)用人類的自然思維方式。開發(fā)一個(gè)軟件是為了解決某些問題,這些問題所涉及的業(yè)務(wù)范圍稱作該軟件的問題決某些問題,這些問題所涉及的業(yè)務(wù)范圍稱作該軟件的問題域。其應(yīng)用領(lǐng)域不僅僅是軟件,還有計(jì)算機(jī)體系結(jié)構(gòu)和人工域。其應(yīng)用領(lǐng)域不僅僅是軟件,還有計(jì)算機(jī)體系結(jié)構(gòu)和人工智能等。智能等。在面向過程的設(shè)計(jì)中,程序員只限于使用語句構(gòu)建軟件,即在面向過程的設(shè)計(jì)中,程序員只限于使用語句構(gòu)建軟件,即把語句集合起來組成方法把語句集合起來組成方法(后面稱之為函數(shù)或過程后面稱之為函數(shù)或過程)。下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)如建筑師,只限于使用木、水、土等原材料搭
5、建房屋,工作如建筑師,只限于使用木、水、土等原材料搭建房屋,工作多,效率低。并且在房子需重新翻蓋時(shí),所有的原材料將沒多,效率低。并且在房子需重新翻蓋時(shí),所有的原材料將沒有用。但如果將水、土先燒成磚,木先制成門、窗等,蓋房有用。但如果將水、土先燒成磚,木先制成門、窗等,蓋房時(shí)使用磚、門、窗成形的原料,只需考慮不同型號(hào)的門、窗時(shí)使用磚、門、窗成形的原料,只需考慮不同型號(hào)的門、窗放的位置。即使已建成的房屋,需要重新翻蓋,也不用從零放的位置。即使已建成的房屋,需要重新翻蓋,也不用從零開始,磚、門、窗等原材料都可重新再用,可提高工作效率,開始,磚、門、窗等原材料都可重新再用,可提高工作效率,降低成本。這
6、一類工程設(shè)計(jì)類似于面向?qū)ο蟮某绦蜷_發(fā)。降低成本。這一類工程設(shè)計(jì)類似于面向?qū)ο蟮某绦蜷_發(fā)。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.3.1項(xiàng)目開發(fā)背景知識(shí)項(xiàng)目開發(fā)背景知識(shí) 1面向?qū)ο蟮拿嫦驅(qū)ο蟮母攀龈攀鲆弧⒚嫦驅(qū)ο蟮幕靖拍钜?、面向?qū)ο蟮幕靖拍?.對(duì)象的基本概念對(duì)象的基本概念對(duì)象是代表現(xiàn)實(shí)生活中的實(shí)物的軟件編程實(shí)體,比如說銀行對(duì)象是代表現(xiàn)實(shí)生活中的實(shí)物的軟件編程實(shí)體,比如說銀行賬號(hào),計(jì)算機(jī)用戶,用戶介面上的按鈕,窗口菜單等。對(duì)象賬號(hào),計(jì)算機(jī)用戶,用戶介面上的按鈕,窗口菜單等。對(duì)象是由它們的狀態(tài)和行為定義的。例如,一個(gè)銀行賬號(hào)擁有一是由它們的狀態(tài)和行為定義的。例如,一個(gè)銀行賬號(hào)擁有一
7、種狀態(tài),諸如當(dāng)前的收支狀況,賬戶的所有入,允許的最小種狀態(tài),諸如當(dāng)前的收支狀況,賬戶的所有入,允許的最小交易額等,而它的行為則包括提取,存入,收支平衡等。交易額等,而它的行為則包括提取,存入,收支平衡等。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)對(duì)象具有兩方面的含義對(duì)象具有兩方面的含義:在現(xiàn)實(shí)世界中,是客觀世界中的一個(gè)實(shí)體在現(xiàn)實(shí)世界中,是客觀世界中的一個(gè)實(shí)體;在計(jì)算機(jī)世界中,作為真實(shí)世界的抽象,由一個(gè)數(shù)據(jù)集以及在計(jì)算機(jī)世界中,作為真實(shí)世界的抽象,由一個(gè)數(shù)據(jù)集以及對(duì)該數(shù)據(jù)集的操作組成。對(duì)該數(shù)據(jù)集的操作組成。2.類的基本概念類的基本概念類類:具有共同屬性和行為的對(duì)象集合。具有共同屬性和行為
8、的對(duì)象集合。類與對(duì)象的關(guān)系類與對(duì)象的關(guān)系:類是對(duì)象的抽象,對(duì)象是類的實(shí)例。類是對(duì)象的抽象,對(duì)象是類的實(shí)例。類是一個(gè)實(shí)體,它定義了一個(gè)對(duì)象的運(yùn)行方式以及在對(duì)象被類是一個(gè)實(shí)體,它定義了一個(gè)對(duì)象的運(yùn)行方式以及在對(duì)象被創(chuàng)建或者說實(shí)例化的時(shí)候所包含的數(shù)據(jù)。類的作用就像一個(gè)創(chuàng)建或者說實(shí)例化的時(shí)候所包含的數(shù)據(jù)。類的作用就像一個(gè)模板,一個(gè)或者多個(gè)對(duì)象可以依照它來創(chuàng)建。模板,一個(gè)或者多個(gè)對(duì)象可以依照它來創(chuàng)建。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.消息消息消息消息:對(duì)象之間相互請(qǐng)求或相互協(xié)作的途徑,是要求某個(gè)對(duì)象對(duì)象之間相互請(qǐng)求或相互協(xié)作的途徑,是要求某個(gè)對(duì)象執(zhí)行某項(xiàng)功能操作的規(guī)格說明。執(zhí)行某項(xiàng)功
9、能操作的規(guī)格說明。消息內(nèi)容消息內(nèi)容:通常包含接收方及請(qǐng)求接收方完成的功能信息。通常包含接收方及請(qǐng)求接收方完成的功能信息。發(fā)送方發(fā)送方:發(fā)出消息,請(qǐng)求接收方響應(yīng)。發(fā)出消息,請(qǐng)求接收方響應(yīng)。接收方接收方:收到消息后,經(jīng)過解釋,激活方法,予以響應(yīng)。收到消息后,經(jīng)過解釋,激活方法,予以響應(yīng)。消息的性質(zhì)消息的性質(zhì):同一對(duì)象可接收不同形式的多個(gè)消息,產(chǎn)生不同同一對(duì)象可接收不同形式的多個(gè)消息,產(chǎn)生不同的響應(yīng)。的響應(yīng)。同一個(gè)消息可以發(fā)給不同的對(duì)象,所做出的響應(yīng)可以截然不同一個(gè)消息可以發(fā)給不同的對(duì)象,所做出的響應(yīng)可以截然不同同;發(fā)送方不需要知道接收方如何對(duì)請(qǐng)求予以響應(yīng)的。發(fā)送方不需要知道接收方如何對(duì)請(qǐng)求予以響應(yīng)
10、的。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求,它應(yīng)該包含下述信息消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求,它應(yīng)該包含下述信息:提供提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和回答信息。服務(wù)通服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和回答信息。服務(wù)通常被稱為方法或函數(shù)。常被稱為方法或函數(shù)。舉例說明舉例說明:對(duì)象是具有某種特性和某種功能的東西。將同一種對(duì)象是具有某種特性和某種功能的東西。將同一種類型的對(duì)象歸為一個(gè)類,以類的形式描述對(duì)象的狀態(tài)和功能。類型的對(duì)象歸為一個(gè)類,以類的形式描述對(duì)象的狀態(tài)和功能。例如,汽車是一類,其中如小轎車、中型面包車、大貨車等,例如,汽車是一類,其中如小轎
11、車、中型面包車、大貨車等,可認(rèn)為是對(duì)象。類是對(duì)象的抽象,對(duì)象是類的實(shí)例。那么汽可認(rèn)為是對(duì)象。類是對(duì)象的抽象,對(duì)象是類的實(shí)例。那么汽車就是車就是java中的類,判定某一對(duì)象是否是汽車,要看它是否中的類,判定某一對(duì)象是否是汽車,要看它是否具有這些屬性,而自行車不能叫汽車,因?yàn)樗痪哂邪l(fā)動(dòng)機(jī)具有這些屬性,而自行車不能叫汽車,因?yàn)樗痪哂邪l(fā)動(dòng)機(jī)屬性。屬性。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,將類的特征和行為分別命名為屬在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,將類的特征和行為分別命名為屬性和方法。例如,定義性和方法。例如,定義“電視機(jī)電視機(jī)”這樣一個(gè)類,如這樣一個(gè)類,如圖圖3-1所
12、所示。示。電視機(jī)的屬性和方法定義如電視機(jī)的屬性和方法定義如圖圖3-2所示。所示。一個(gè)類中定義的方法可以被該類的對(duì)象調(diào)用,對(duì)象方法的每一個(gè)類中定義的方法可以被該類的對(duì)象調(diào)用,對(duì)象方法的每一調(diào)用被稱作發(fā)送一個(gè)消息一調(diào)用被稱作發(fā)送一個(gè)消息(message)給對(duì)象。對(duì)象間是給對(duì)象。對(duì)象間是相互獨(dú)立的,通過發(fā)送消息相互影響。采用消息可以讓對(duì)象相互獨(dú)立的,通過發(fā)送消息相互影響。采用消息可以讓對(duì)象的行為通過它的方法來表達(dá)。一個(gè)消息由三部分組成的行為通過它的方法來表達(dá)。一個(gè)消息由三部分組成:消息目標(biāo)對(duì)象消息目標(biāo)對(duì)象;執(zhí)行方法的名字執(zhí)行方法的名字;上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)執(zhí)行方法所需要
13、的參數(shù)執(zhí)行方法所需要的參數(shù)(parameters) 。(因因java是一是一個(gè)對(duì)象化的語言,對(duì)象也常被用來當(dāng)作參數(shù)傳遞個(gè)對(duì)象化的語言,對(duì)象也常被用來當(dāng)作參數(shù)傳遞)。方法。方法。表明對(duì)象所具有的行為,是對(duì)象與外界的接口。一個(gè)對(duì)象的表明對(duì)象所具有的行為,是對(duì)象與外界的接口。一個(gè)對(duì)象的行為是由它上面的操作定義的,這些操作被叫做方法。方法行為是由它上面的操作定義的,這些操作被叫做方法。方法可以改變一個(gè)對(duì)象的狀態(tài),創(chuàng)建新對(duì)象,實(shí)現(xiàn)實(shí)用的功能等。可以改變一個(gè)對(duì)象的狀態(tài),創(chuàng)建新對(duì)象,實(shí)現(xiàn)實(shí)用的功能等。作用作用:改變對(duì)象的屬性,返回對(duì)象的屬性。改變對(duì)象的屬性,返回對(duì)象的屬性。二、面向?qū)ο蟮奶攸c(diǎn)二、面向?qū)ο蟮奶?/p>
14、點(diǎn)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)(1)封裝。隱藏實(shí)現(xiàn)細(xì)節(jié)。例如,對(duì)象可以看作是數(shù)據(jù)及作封裝。隱藏實(shí)現(xiàn)細(xì)節(jié)。例如,對(duì)象可以看作是數(shù)據(jù)及作用在這些數(shù)據(jù)上的封裝體,它通過一個(gè)接口與外部進(jìn)行交互,用在這些數(shù)據(jù)上的封裝體,它通過一個(gè)接口與外部進(jìn)行交互,因此封裝使得對(duì)象的內(nèi)部實(shí)現(xiàn)與外部接口分離開來。這樣,因此封裝使得對(duì)象的內(nèi)部實(shí)現(xiàn)與外部接口分離開來。這樣,改變對(duì)象的內(nèi)部實(shí)現(xiàn)并不影響使用這個(gè)對(duì)象的其他對(duì)象或應(yīng)改變對(duì)象的內(nèi)部實(shí)現(xiàn)并不影響使用這個(gè)對(duì)象的其他對(duì)象或應(yīng)用。這種封裝性也體現(xiàn)了一種抽象和信息隱蔽。用。這種封裝性也體現(xiàn)了一種抽象和信息隱蔽。 (2)繼承性。繼承是指一個(gè)子類繼承父類繼承性
15、。繼承是指一個(gè)子類繼承父類(或稱為基類或稱為基類)的特的特征征(數(shù)據(jù)結(jié)構(gòu)和方法數(shù)據(jù)結(jié)構(gòu)和方法)。在繼承一個(gè)父類時(shí),可以在子類中增。在繼承一個(gè)父類時(shí),可以在子類中增加新的數(shù)據(jù)結(jié)構(gòu)和方法,也可以重定義從父類中繼承下來的加新的數(shù)據(jù)結(jié)構(gòu)和方法,也可以重定義從父類中繼承下來的方法。父類的特征并不受子類的影響,反之,在理想情況下,方法。父類的特征并不受子類的影響,反之,在理想情況下,父類的內(nèi)部實(shí)現(xiàn)的變化不會(huì)影響子類。父類的內(nèi)部實(shí)現(xiàn)的變化不會(huì)影響子類。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)當(dāng)然,一個(gè)子類可有多個(gè)父類,這種情況稱為多繼承當(dāng)然,一個(gè)子類可有多個(gè)父類,這種情況稱為多繼承(c+語言支持多
16、繼承語言支持多繼承)。繼承帶來的好處是軟件的復(fù)用,使用繼承。繼承帶來的好處是軟件的復(fù)用,使用繼承可以在已有軟件構(gòu)件的基礎(chǔ)上構(gòu)造新的軟件,從而提高軟件可以在已有軟件構(gòu)件的基礎(chǔ)上構(gòu)造新的軟件,從而提高軟件的生產(chǎn)率并保證軟件的質(zhì)量。的生產(chǎn)率并保證軟件的質(zhì)量。簡而言之,繼承性是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制簡而言之,繼承性是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制;繼承性具有傳遞性繼承性具有傳遞性;繼承性包括單繼承和多重繼承。繼承性包括單繼承和多重繼承。繼承性具有以下作用繼承性具有以下作用:使軟件系統(tǒng)具有開放性使軟件系統(tǒng)具有開放性;更好地進(jìn)行抽更好地進(jìn)行抽象與分類象與分類;增強(qiáng)代碼的重用率增強(qiáng)代碼的重用
17、率;提高可維護(hù)性。提高可維護(hù)性。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)(3)多態(tài)性。不同的對(duì)象收到同一個(gè)消息可產(chǎn)生完全不同的多態(tài)性。不同的對(duì)象收到同一個(gè)消息可產(chǎn)生完全不同的效果,這一現(xiàn)象叫做多態(tài)。多態(tài)的原意是指一個(gè)實(shí)體多個(gè)形效果,這一現(xiàn)象叫做多態(tài)。多態(tài)的原意是指一個(gè)實(shí)體多個(gè)形態(tài)。在面向?qū)ο蟪绦蛟O(shè)計(jì)中主要是指變量多態(tài)和方法多態(tài),態(tài)。在面向?qū)ο蟪绦蛟O(shè)計(jì)中主要是指變量多態(tài)和方法多態(tài),變量多態(tài)是指同一個(gè)變量在運(yùn)行時(shí)刻標(biāo)識(shí)變量多態(tài)是指同一個(gè)變量在運(yùn)行時(shí)刻標(biāo)識(shí)(表示表示)不同類型的不同類型的對(duì)象,而方法多態(tài)主要是指同一個(gè)方法做不一樣的動(dòng)作,例對(duì)象,而方法多態(tài)主要是指同一個(gè)方法做不一樣的動(dòng)作,例
18、如不同類的對(duì)象接受相同的消息如不同類的對(duì)象接受相同的消息(方法調(diào)用方法調(diào)用),但有不一樣的,但有不一樣的響應(yīng)動(dòng)作。多態(tài)使得消息發(fā)送者能給一組具有公共接口的對(duì)響應(yīng)動(dòng)作。多態(tài)使得消息發(fā)送者能給一組具有公共接口的對(duì)象發(fā)送相同的消息,接收者作出相應(yīng)的動(dòng)作。變量多態(tài)是方象發(fā)送相同的消息,接收者作出相應(yīng)的動(dòng)作。變量多態(tài)是方法多態(tài)的基礎(chǔ)。多態(tài)通常與語言的動(dòng)態(tài)綁定法多態(tài)的基礎(chǔ)。多態(tài)通常與語言的動(dòng)態(tài)綁定(dynamic binding)機(jī)制有關(guān)。機(jī)制有關(guān)。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)多態(tài)的效果多態(tài)的效果:用戶發(fā)送一個(gè)通用的消息,而實(shí)現(xiàn)的細(xì)節(jié)則由接用戶發(fā)送一個(gè)通用的消息,而實(shí)現(xiàn)的細(xì)節(jié)則由接收
19、對(duì)象自行決定。收對(duì)象自行決定。多態(tài)性的作用多態(tài)性的作用:增強(qiáng)了操作的透明性、可理解性和可擴(kuò)展性增強(qiáng)了操作的透明性、可理解性和可擴(kuò)展性;增強(qiáng)了軟件的靈活性和重用性。增強(qiáng)了軟件的靈活性和重用性。三、面向?qū)ο蟮膬?yōu)點(diǎn)三、面向?qū)ο蟮膬?yōu)點(diǎn)為什么現(xiàn)代程序設(shè)計(jì)語言會(huì)向面向?qū)ο缶幊炭繑n為什么現(xiàn)代程序設(shè)計(jì)語言會(huì)向面向?qū)ο缶幊炭繑n?這是因?yàn)檫@是因?yàn)槊嫦驅(qū)ο缶幊叹邆淞藥讉€(gè)優(yōu)點(diǎn),比如面向?qū)ο缶幊叹邆淞藥讉€(gè)優(yōu)點(diǎn),比如:代碼維護(hù)方便、可擴(kuò)展代碼維護(hù)方便、可擴(kuò)展性好、支持代碼重用技術(shù)等。這些優(yōu)點(diǎn)是過程編程語言所不性好、支持代碼重用技術(shù)等。這些優(yōu)點(diǎn)是過程編程語言所不具備的。下面我們就來談?wù)劽嫦驅(qū)ο蠹夹g(shù)的這些優(yōu)點(diǎn)。具備的。下面我
20、們就來談?wù)劽嫦驅(qū)ο蠹夹g(shù)的這些優(yōu)點(diǎn)。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)(1)維護(hù)簡單。維護(hù)簡單。模塊化是面向?qū)ο缶幊讨械囊粋€(gè)特征。實(shí)體被表示為類和同模塊化是面向?qū)ο缶幊讨械囊粋€(gè)特征。實(shí)體被表示為類和同一名字空間中具有相同功能的類,可以在名字空間中添加一一名字空間中具有相同功能的類,可以在名字空間中添加一個(gè)類而不會(huì)影響該名字空間的其他成員。個(gè)類而不會(huì)影響該名字空間的其他成員。(2)可擴(kuò)充性。可擴(kuò)充性。面向?qū)ο缶幊虖谋举|(zhì)上支持?jǐn)U充性。如果有一個(gè)具有某種功面向?qū)ο缶幊虖谋举|(zhì)上支持?jǐn)U充性。如果有一個(gè)具有某種功能的類,就可以很快地?cái)U(kuò)充這個(gè)類,創(chuàng)建一個(gè)具有擴(kuò)充的功能的類,就可以很快地?cái)U(kuò)充這個(gè)
21、類,創(chuàng)建一個(gè)具有擴(kuò)充的功能的類。能的類。(3)代碼重用。代碼重用。上一頁 下一頁返回3.2 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)由于功能是被封裝在類中的,并且類是作為一個(gè)獨(dú)立實(shí)體而由于功能是被封裝在類中的,并且類是作為一個(gè)獨(dú)立實(shí)體而存在的,提供一個(gè)類庫就非常簡單了。事實(shí)上,任何一個(gè)編存在的,提供一個(gè)類庫就非常簡單了。事實(shí)上,任何一個(gè)編程語言的程序員都可以使用類庫,類庫提供了很多的功能。程語言的程序員都可以使用類庫,類庫提供了很多的功能。更令人高興的是,可以通過提供符合需求的類來擴(kuò)充這些功更令人高興的是,可以通過提供符合需求的類來擴(kuò)充這些功能。能。3.3.2項(xiàng)目開發(fā)背景知識(shí)項(xiàng)目開發(fā)背景知識(shí) 2類的定義類的定
22、義進(jìn)行進(jìn)行java程序設(shè)計(jì),實(shí)際上就是定義類的過程。一個(gè)程序設(shè)計(jì),實(shí)際上就是定義類的過程。一個(gè)java源程序文件往往是由許多個(gè)類組成的。從用戶的角度看,源程序文件往往是由許多個(gè)類組成的。從用戶的角度看,java源程序中的類分為兩種。源程序中的類分為兩種。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)(1)系統(tǒng)定義的類,即系統(tǒng)定義的類,即java類庫,它是系統(tǒng)定義好的類。類類庫,它是系統(tǒng)定義好的類。類庫是庫是java語言的重要組成部分。語言的重要組成部分。java語言由語法規(guī)則和類語言由語法規(guī)則和類庫兩部分組成,語法規(guī)則確定庫兩部分組成,語法規(guī)則確定java程序的書寫規(guī)范程序的書寫規(guī)范;類庫
23、則類庫則提供了提供了java程序與運(yùn)行它的系統(tǒng)軟件程序與運(yùn)行它的系統(tǒng)軟件(java虛擬機(jī)虛擬機(jī))之間的之間的接口。接口。java類庫是一組由它的發(fā)明者類庫是一組由它的發(fā)明者sun公司以及其他軟公司以及其他軟件開發(fā)商編寫好的件開發(fā)商編寫好的java程序模塊,每個(gè)模塊通常對(duì)應(yīng)一種特程序模塊,每個(gè)模塊通常對(duì)應(yīng)一種特定的基本功能和任務(wù),且這些模塊都是經(jīng)過嚴(yán)格測(cè)試的,因定的基本功能和任務(wù),且這些模塊都是經(jīng)過嚴(yán)格測(cè)試的,因而也總是正確有效的。當(dāng)自己編寫的而也總是正確有效的。當(dāng)自己編寫的java程序需要完成其中程序需要完成其中某一功能的時(shí)候,就可以直接利用這些現(xiàn)成的類庫,而不需某一功能的時(shí)候,就可以直接利用
24、這些現(xiàn)成的類庫,而不需要一切從頭編寫,這樣不僅可以提高編程效率,也可以保證要一切從頭編寫,這樣不僅可以提高編程效率,也可以保證軟件的質(zhì)量。軟件的質(zhì)量。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)(2)用戶自己定義的類。系統(tǒng)定義的類雖然實(shí)現(xiàn)了許多常見用戶自己定義的類。系統(tǒng)定義的類雖然實(shí)現(xiàn)了許多常見的功能,但是用戶程序仍然需要針對(duì)特定問題的特定邏輯來的功能,但是用戶程序仍然需要針對(duì)特定問題的特定邏輯來定義自己的類。用戶按照定義自己的類。用戶按照java的語法規(guī)則,把所研究的問題的語法規(guī)則,把所研究的問題描述成描述成java程序中的類,以解決特定問題。程序中的類,以解決特定問題。一個(gè)類的定義應(yīng)
25、包含兩部分一個(gè)類的定義應(yīng)包含兩部分:類的聲明和類的實(shí)體。類的聲明和類的實(shí)體。一、類的聲明一、類的聲明類聲明包括關(guān)鍵字類聲明包括關(guān)鍵字class、類名及類的屬性。類名必須是合、類名及類的屬性。類名必須是合法的標(biāo)識(shí)符,類的屬性為一些可選的關(guān)鍵字。其聲明格式如法的標(biāo)識(shí)符,類的屬性為一些可選的關(guān)鍵字。其聲明格式如下,下,)內(nèi)參數(shù)為可選項(xiàng)。內(nèi)參數(shù)為可選項(xiàng)。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí) 其中,修飾符其中,修飾符public, abstract, final說明了類的屬性,說明了類的屬性,classname為類名,為類名,superclassname為類的父類的名為類的父類的名字,字,
26、interfacenamelist為類所實(shí)現(xiàn)的接口列表。修飾符為類所實(shí)現(xiàn)的接口列表。修飾符含義如下:含義如下:abstract:聲明該類不能被實(shí)例化。:聲明該類不能被實(shí)例化。final:聲明該類不能被繼承,即沒有子類。:聲明該類不能被繼承,即沒有子類。class class name:關(guān)鍵字:關(guān)鍵字class告訴編譯器表示類的聲告訴編譯器表示類的聲明以及類名是明以及類名是class name。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)extends super class name:extends語句擴(kuò)展語句擴(kuò)展super class name為該類的父類。為該類的父類。impleme
27、nts interface name list:聲明類可實(shí)現(xiàn)一:聲明類可實(shí)現(xiàn)一個(gè)或多個(gè)接口,可以使用關(guān)鍵字個(gè)或多個(gè)接口,可以使用關(guān)鍵字implements并在其后面給并在其后面給出由類實(shí)現(xiàn)的多個(gè)接口名字列表,各接口間以逗號(hào)分隔。出由類實(shí)現(xiàn)的多個(gè)接口名字列表,各接口間以逗號(hào)分隔。二、成員變量二、成員變量成員變量的聲明方式如下:成員變量的聲明方式如下:上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)其中,其中, /成員變量成員變量static:靜態(tài)變量靜態(tài)變量(類變量類變量);相對(duì)于實(shí)例變量。相對(duì)于實(shí)例變量。final:常量。常量。transient:暫時(shí)性變量,用于對(duì)象存檔。暫時(shí)性變量,用于對(duì)
28、象存檔。volatile:貢獻(xiàn)變量,用于并發(fā)線程的共享。貢獻(xiàn)變量,用于并發(fā)線程的共享。三、成員方法三、成員方法方法的實(shí)現(xiàn)包括兩部分內(nèi)容方法的實(shí)現(xiàn)包括兩部分內(nèi)容:方法聲明和方法體。方法聲明和方法體。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)方法聲明中的限定詞的含義。方法聲明中的限定詞的含義。static:類方法,可通過類名直接調(diào)用。類方法,可通過類名直接調(diào)用。abstract:抽象方法,沒有方法體。抽象方法,沒有方法體。final:方法不能被重寫。方法不能被重寫。native:集成其他語言的代碼。集成其他語言的代碼。synchronized:控制多個(gè)并發(fā)線程的訪問。:控制多個(gè)并發(fā)線程的訪
29、問。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)【例【例3-1】一個(gè)完整的類定義如下?!恳粋€(gè)完整的類定義如下。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.3.3項(xiàng)目開發(fā)背景知識(shí)項(xiàng)目開發(fā)背景知識(shí) 3成員變量和成成員變量和成員方法員方法一、成員變量一、成員變量成員變量是類定義中的重要組成部分,從不同的角度區(qū)分,成員變量是類定義中的重要組成部分,從不同的角度區(qū)分,它可以分為多種類型。它可以分為多種類型。1.從變量定義的位置分從變量定義的位置分根據(jù)變量定義的位置劃分,變量可以分為全局變量和局部變根據(jù)變量定義的位置劃分,變量可以分為全局變量和局部變量。量。上一頁 下一頁返回3.3 項(xiàng)目支
30、撐知識(shí)項(xiàng)目支撐知識(shí)全局變量全局變量:定義在類中任何方法的外部,其作用范圍為該變量定義在類中任何方法的外部,其作用范圍為該變量所屬的整個(gè)類。所屬的整個(gè)類。局部變量局部變量:定義在類中某一方法的內(nèi)部,其作用范圍為該變量定義在類中某一方法的內(nèi)部,其作用范圍為該變量定義的地方起,至所屬方法結(jié)束的地方為止。定義的地方起,至所屬方法結(jié)束的地方為止?!纠纠?-2】測(cè)試全局變量的操作?!繙y(cè)試全局變量的操作。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)程序運(yùn)行結(jié)果如程序運(yùn)行結(jié)果如圖圖3-3所示。所示。從此例我們可以看出,全局變量作用于其所在的整個(gè)類,在從
31、此例我們可以看出,全局變量作用于其所在的整個(gè)類,在確保全局變量定義在類中任何方法的外部的前提下,它可以確保全局變量定義在類中任何方法的外部的前提下,它可以被隨處安放,即使它的定義處在該全局變量的使用處之后。被隨處安放,即使它的定義處在該全局變量的使用處之后。如例子中的全局變量如例子中的全局變量var a, var b的定義語句,完全可以的定義語句,完全可以把其安排在類的把其安排在類的prim()方法定義體的右括號(hào)之后,程序運(yùn)方法定義體的右括號(hào)之后,程序運(yùn)行的效果相同,這一點(diǎn)是與行的效果相同,這一點(diǎn)是與c/ c +所不同的。所不同的。【例【例3-3】測(cè)試局部變量的操作?!繙y(cè)試局部變量的操作。上一
32、頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)運(yùn)行結(jié)果如運(yùn)行結(jié)果如圖圖3-4所示。所示。2.從變量的數(shù)據(jù)類型分從變量的數(shù)據(jù)類型分根據(jù)變量所屬的數(shù)據(jù)類型劃分,變量可以分為基本類型變量根據(jù)變量所屬的數(shù)據(jù)類型劃分,變量可以分為基本類型變量和對(duì)象類型變量。和對(duì)象類型變量。所謂基本類型變量,就是指我們?cè)诘诙轮兄v述的所謂基本類型變量,就是指我們?cè)诘诙轮兄v述的8種基本種基本數(shù)據(jù)類型,如數(shù)據(jù)類型,如int, double等,而由系統(tǒng)類庫或者自定義類等,而由系統(tǒng)類庫或者自定義類定義的變量,則為對(duì)象類型變量。這正如我們講數(shù)據(jù)類型時(shí)定義的變量,則為對(duì)象類型變量。
33、這正如我們講數(shù)據(jù)類型時(shí)對(duì)應(yīng)的,基本類型對(duì)應(yīng)的是基本變量,在一個(gè)類中又被稱為對(duì)應(yīng)的,基本類型對(duì)應(yīng)的是基本變量,在一個(gè)類中又被稱為成員變量。對(duì)象類型對(duì)應(yīng)的就是對(duì)象類型變量,在類中又可成員變量。對(duì)象類型對(duì)應(yīng)的就是對(duì)象類型變量,在類中又可以被稱為實(shí)例變量。以被稱為實(shí)例變量。【例【例3-4】基本類型變量和對(duì)象型變量測(cè)試?!炕绢愋妥兞亢蛯?duì)象型變量測(cè)試。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)程序運(yùn)行結(jié)果如程序運(yùn)行結(jié)果如圖圖3-5所示。所示。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)【例【例3-5】簡單數(shù)據(jù)類型與引用數(shù)據(jù)的區(qū)別?!亢唵螖?shù)據(jù)
34、類型與引用數(shù)據(jù)的區(qū)別。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)程序運(yùn)行結(jié)果如程序運(yùn)行結(jié)果如圖圖3-6所示。所示。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.從變量的性質(zhì)分從變量的性質(zhì)分根據(jù)變量的性質(zhì)劃分,可以將變量分為類變量和成員變量。根據(jù)變量的性質(zhì)劃分,可以將變量分為類變量和成員變量。所謂類變量所謂類變量(class variable),就是用關(guān)鍵字,就是用關(guān)鍵字static聲明聲明的全局變量,它是屬于類本身的,不代表任何對(duì)象的狀態(tài)。的全局變量,它是屬于類本身的,不代表任何對(duì)象的狀態(tài)。所謂成員變量,就是與類變量相對(duì)的,沒有用所謂成員變量,就是與類變量相對(duì)的,沒有用stat
35、ic聲明的聲明的其他變量,它是與具體對(duì)象相關(guān)的,保持對(duì)象的狀態(tài)。其他變量,它是與具體對(duì)象相關(guān)的,保持對(duì)象的狀態(tài)。類變量的使用能滿足這樣的需求,即有時(shí)想有一個(gè)可以在類類變量的使用能滿足這樣的需求,即有時(shí)想有一個(gè)可以在類的所有實(shí)例中共享的變量。比如,這可以用作實(shí)例之間交流的所有實(shí)例中共享的變量。比如,這可以用作實(shí)例之間交流的基礎(chǔ)或追蹤已經(jīng)創(chuàng)建的實(shí)例的數(shù)量。數(shù)值型類變量在進(jìn)行的基礎(chǔ)或追蹤已經(jīng)創(chuàng)建的實(shí)例的數(shù)量。數(shù)值型類變量在進(jìn)行數(shù)值計(jì)算時(shí)候有其特殊性,即每次參加運(yùn)算時(shí)的初始值為其數(shù)值計(jì)算時(shí)候有其特殊性,即每次參加運(yùn)算時(shí)的初始值為其上次運(yùn)算的結(jié)果值。上次運(yùn)算的結(jié)果值。上一頁 下一頁返回3.3 項(xiàng)目支撐知
36、識(shí)項(xiàng)目支撐知識(shí)類變量與成員變量的通用調(diào)用格式如下。類變量與成員變量的通用調(diào)用格式如下。類變量類變量:類名類名.類變量名類變量名成員變量成員變量:對(duì)象名對(duì)象名.成員變量名成員變量名【例【例3-6】類變量和成員變量測(cè)試】類變量和成員變量測(cè)試上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)程序運(yùn)行結(jié)果如程序運(yùn)行結(jié)果如圖圖3-7所示。所示。此例中,設(shè)置此例中,設(shè)置l對(duì)象計(jì)數(shù)器對(duì)象計(jì)數(shù)器counter為為static型,要注意,型,要注意,若沒有為該類變量初始化的話,那系統(tǒng)將為其設(shè)置默認(rèn)值若沒有為該類變量初始化的話,那系統(tǒng)將為其設(shè)置默認(rèn)值0。二、成員方
37、法的使用二、成員方法的使用成員方法通常用來描述該類對(duì)象所具有的功能或操作,反映成員方法通常用來描述該類對(duì)象所具有的功能或操作,反映對(duì)象的行為,是具有某種相對(duì)獨(dú)立功能的程序模塊。對(duì)象的行為,是具有某種相對(duì)獨(dú)立功能的程序模塊。1.成員方法聲明成員方法聲明在在java程序中,成員方法的聲明只能在類中進(jìn)行,格式如下程序中,成員方法的聲明只能在類中進(jìn)行,格式如下:上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)一修飾一修飾 返回值的類型返回值的類型 成員方法名成員方法名(形式參數(shù)表形式參數(shù)表)throw 一異常表一異常表說明部分說明部分執(zhí)行語句部分執(zhí)行語句部分上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目
38、支撐知識(shí)成員方法的聲明包括成員方法頭和方法體兩部分,其中成員方法的聲明包括成員方法頭和方法體兩部分,其中:成員成員方法頭確定成員方法的名字、形式參數(shù)的名字和類型、返回方法頭確定成員方法的名字、形式參數(shù)的名字和類型、返回值的類型、訪問限制和異常處理等值的類型、訪問限制和異常處理等;方法體由包括在花括號(hào)內(nèi)方法體由包括在花括號(hào)內(nèi)的說明部分和描述該方法功能實(shí)現(xiàn)的執(zhí)行部分組成,執(zhí)行部的說明部分和描述該方法功能實(shí)現(xiàn)的執(zhí)行部分組成,執(zhí)行部分一般由變量聲明語句、賦值語句、流程控制語句、方法調(diào)分一般由變量聲明語句、賦值語句、流程控制語句、方法調(diào)用語句、返回語句等用語句、返回語句等java允許的各種語句成分組成,
39、是程序允許的各種語句成分組成,是程序設(shè)計(jì)中最復(fù)雜的部分,幾乎會(huì)用到我們已經(jīng)學(xué)習(xí)過的和將要設(shè)計(jì)中最復(fù)雜的部分,幾乎會(huì)用到我們已經(jīng)學(xué)習(xí)過的和將要學(xué)習(xí)的絕大多數(shù)內(nèi)容。學(xué)習(xí)的絕大多數(shù)內(nèi)容。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)在成員方法頭中在成員方法頭中:(1)修飾符。修飾符可是修飾符。修飾符可是 public,private,protected等訪問權(quán)限修飾符,也可以是等訪問權(quán)限修飾符,也可以是static, final, native, abstract等非訪問權(quán)限修飾符。訪問權(quán)限修飾符指出滿足等非訪問權(quán)限修飾符。訪問權(quán)限修飾符指出滿足什么條件時(shí)該成員方法可以被訪問。非訪問權(quán)限修飾符指
40、明什么條件時(shí)該成員方法可以被訪問。非訪問權(quán)限修飾符指明數(shù)據(jù)成員的使用方法。具體參閱下面有關(guān)內(nèi)容。數(shù)據(jù)成員的使用方法。具體參閱下面有關(guān)內(nèi)容。(2)返回值的類型。返回值的類型用返回值的類型。返回值的類型用java允許的各種數(shù)據(jù)類允許的各種數(shù)據(jù)類型關(guān)鍵字型關(guān)鍵字(例如,例如,int, float等等)指明成員方法返回結(jié)果值的指明成員方法返回結(jié)果值的數(shù)據(jù)類型。若成員方法沒有返回值,則在返回值的類型處應(yīng)數(shù)據(jù)類型。若成員方法沒有返回值,則在返回值的類型處應(yīng)寫上寫上void關(guān)鍵字。關(guān)鍵字。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)(3)成員方法名。成員方法名也就是用戶遵循標(biāo)識(shí)符定義規(guī)成員方法名。成員
41、方法名也就是用戶遵循標(biāo)識(shí)符定義規(guī)則命名的標(biāo)識(shí)符。則命名的標(biāo)識(shí)符。(4)形式參數(shù)表。成員方法可分為帶參成員方法和無參成員形式參數(shù)表。成員方法可分為帶參成員方法和無參成員方法兩種。對(duì)于無參成員方法來說則無形式參數(shù)表這一項(xiàng),方法兩種。對(duì)于無參成員方法來說則無形式參數(shù)表這一項(xiàng),但其后的圓括號(hào)不可省略但其后的圓括號(hào)不可省略;對(duì)于帶參成員方法來說,形式參數(shù)對(duì)于帶參成員方法來說,形式參數(shù)表指明調(diào)用該方法所需要的參數(shù)個(gè)數(shù)、參數(shù)的名字及其參數(shù)表指明調(diào)用該方法所需要的參數(shù)個(gè)數(shù)、參數(shù)的名字及其參數(shù)的數(shù)據(jù)類型,其格式為的數(shù)據(jù)類型,其格式為:(形式參數(shù)類型形式參數(shù)類型1,形式參數(shù)名,形式參數(shù)名1,形,形式參數(shù)類型式參數(shù)
42、類型2,形式參數(shù)名,形式參數(shù)名2,)(5) throws!異常表。它指出當(dāng)該方法遇到一些方法的設(shè)異常表。它指出當(dāng)該方法遇到一些方法的設(shè)計(jì)者未曾想到的異常問題時(shí)如何處理。這部分內(nèi)容將在項(xiàng)目計(jì)者未曾想到的異常問題時(shí)如何處理。這部分內(nèi)容將在項(xiàng)目4中作專門介紹。中作專門介紹。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)2.成員方法引用成員方法引用成員方法的引用可有下述幾種方式。成員方法的引用可有下述幾種方式。方法語句方法語句:成員方法作為一個(gè)獨(dú)立的語句被引用。例如,成員方法作為一個(gè)獨(dú)立的語句被引用。例如,add ( a, b) 。方法表達(dá)式方法表達(dá)式:成員方法作為表達(dá)式中的一部分被引用。例如,成
43、員方法作為表達(dá)式中的一部分被引用。例如,f3 =2 +add1(f1,f2)。方法作為參數(shù)方法作為參數(shù):一個(gè)成員方法作為另一個(gè)成員方法的參數(shù)被一個(gè)成員方法作為另一個(gè)成員方法的參數(shù)被引用。例如,引用。例如,add (a, add1 (f1,f2),這里,這里add1()是是方法。方法。通過對(duì)象來引用通過對(duì)象來引用:即通過形如即通過形如“對(duì)象名對(duì)象名.方法名方法名”的形式來的形式來引用對(duì)象,如引用對(duì)象,如dane.showdog( 25 , 25),這里,這里dane是對(duì)象名,是對(duì)象名,showdog是方法名。是方法名。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.形式參數(shù)與實(shí)際參數(shù)形式參
44、數(shù)與實(shí)際參數(shù)一般來說,可通過如下的格式來引用成員方法一般來說,可通過如下的格式來引用成員方法:成員方法名成員方法名(實(shí)參列表實(shí)參列表)但在引用時(shí)應(yīng)注意下述問題。但在引用時(shí)應(yīng)注意下述問題。對(duì)于無參成員方法來說,是沒有實(shí)參列表的,但方法后的對(duì)于無參成員方法來說,是沒有實(shí)參列表的,但方法后的括弧不能省略。括弧不能省略。對(duì)于帶參數(shù)的成員方法來說,實(shí)參的個(gè)數(shù)、順序以及它們對(duì)于帶參數(shù)的成員方法來說,實(shí)參的個(gè)數(shù)、順序以及它們的數(shù)據(jù)類型必須與形式參數(shù)的個(gè)數(shù)、順序以及它們的數(shù)據(jù)類的數(shù)據(jù)類型必須與形式參數(shù)的個(gè)數(shù)、順序以及它們的數(shù)據(jù)類型保持一致,各個(gè)實(shí)參間用逗號(hào)分隔。實(shí)參名與形參名可以型保持一致,各個(gè)實(shí)參間用逗號(hào)分
45、隔。實(shí)參名與形參名可以相同也可以不同。相同也可以不同。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)實(shí)參也可以是表達(dá)式,此時(shí)一定要注意使表達(dá)式的數(shù)據(jù)類實(shí)參也可以是表達(dá)式,此時(shí)一定要注意使表達(dá)式的數(shù)據(jù)類型與形參的數(shù)據(jù)類型相同,或者使表達(dá)式的類型按型與形參的數(shù)據(jù)類型相同,或者使表達(dá)式的類型按java類型類型轉(zhuǎn)換規(guī)則達(dá)到形參指明的數(shù)據(jù)類型。轉(zhuǎn)換規(guī)則達(dá)到形參指明的數(shù)據(jù)類型。4.構(gòu)造方法構(gòu)造方法在類的構(gòu)造中有一種特殊的成員方法,被稱為構(gòu)造方法。構(gòu)在類的構(gòu)造中有一種特殊的成員方法,被稱為構(gòu)造方法。構(gòu)造方法的應(yīng)用通常具有明確的目的造方法的應(yīng)用通常具有明確的目的:給對(duì)象進(jìn)行初始化,即對(duì)給對(duì)象進(jìn)行初始化,即
46、對(duì)類中的成員變量賦值,這種初始化動(dòng)作在類中的成員變量賦值,這種初始化動(dòng)作在new返回新創(chuàng)建對(duì)返回新創(chuàng)建對(duì)象的引用前完成。構(gòu)造方法具有如下的明顯特點(diǎn)。象的引用前完成。構(gòu)造方法具有如下的明顯特點(diǎn)。構(gòu)造方法的名字與其所屬類的類名相同。構(gòu)造方法的名字與其所屬類的類名相同。構(gòu)造方法是給對(duì)象賦初值,沒有返回值。構(gòu)造方法是給對(duì)象賦初值,沒有返回值。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)構(gòu)造方法不能被程序顯式調(diào)用,由構(gòu)造方法不能被程序顯式調(diào)用,由new構(gòu)造對(duì)象時(shí)系統(tǒng)自構(gòu)造對(duì)象時(shí)系統(tǒng)自動(dòng)調(diào)用。動(dòng)調(diào)用。構(gòu)造方法可以有零個(gè)或多個(gè)形式參數(shù)。構(gòu)造方法可以有零個(gè)或多個(gè)形式參數(shù)。構(gòu)造方法可在類中由用戶定義,若用
47、戶沒有定義,系統(tǒng)將構(gòu)造方法可在類中由用戶定義,若用戶沒有定義,系統(tǒng)將自動(dòng)生成一個(gè)空構(gòu)造方法。自動(dòng)生成一個(gè)空構(gòu)造方法。構(gòu)造方法可以通過重載實(shí)現(xiàn)不同的初始化方法。構(gòu)造方法可以通過重載實(shí)現(xiàn)不同的初始化方法?!纠纠?-7】構(gòu)造方法測(cè)試。】構(gòu)造方法測(cè)試。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)程序運(yùn)行結(jié)果如程序運(yùn)行結(jié)果如圖圖3-8所示。所示。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)本例中涉及到了方法的重載,可暫時(shí)簡單理解為系統(tǒng)依據(jù)不本例中涉及到了方法的重載,可暫時(shí)簡單理解為系統(tǒng)依據(jù)不
48、同的參數(shù)列表調(diào)用同名的方法,如代碼中同的參數(shù)列表調(diào)用同名的方法,如代碼中cata和和catb對(duì)象對(duì)象的構(gòu)造分別調(diào)用了不同的的構(gòu)造分別調(diào)用了不同的cat類的構(gòu)造方法。類的構(gòu)造方法。)3.3.4項(xiàng)目開發(fā)背景知識(shí)項(xiàng)目開發(fā)背景知識(shí)4對(duì)象的使用對(duì)象的使用當(dāng)我們創(chuàng)建了一個(gè)類,就等同于創(chuàng)建了一種新的數(shù)據(jù)類型,當(dāng)我們創(chuàng)建了一個(gè)類,就等同于創(chuàng)建了一種新的數(shù)據(jù)類型,可以像使用基本數(shù)據(jù)類型一樣地使用類。類定義好之后,我可以像使用基本數(shù)據(jù)類型一樣地使用類。類定義好之后,我們將用該類定義一個(gè)實(shí)例,即該類的對(duì)象。們將用該類定義一個(gè)實(shí)例,即該類的對(duì)象。一、對(duì)象的創(chuàng)建一、對(duì)象的創(chuàng)建創(chuàng)建一個(gè)類的對(duì)象通常包括三個(gè)步驟,即聲明對(duì)象
49、、建立對(duì)創(chuàng)建一個(gè)類的對(duì)象通常包括三個(gè)步驟,即聲明對(duì)象、建立對(duì)象和初始化對(duì)象。象和初始化對(duì)象。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)1.聲明對(duì)象聲明對(duì)象所謂聲明對(duì)象,就是確定對(duì)象的名稱,并指明該對(duì)象所屬的所謂聲明對(duì)象,就是確定對(duì)象的名稱,并指明該對(duì)象所屬的類。聲明對(duì)象的格式如下類。聲明對(duì)象的格式如下:類名對(duì)象名表類名對(duì)象名表;其中其中:類名是指對(duì)象所屬類的名字,它是在聲明類時(shí)定義的類名是指對(duì)象所屬類的名字,它是在聲明類時(shí)定義的;對(duì)象名表是指一個(gè)或多個(gè)對(duì)象名,若為多個(gè)對(duì)象名時(shí),用逗對(duì)象名表是指一個(gè)或多個(gè)對(duì)象名,若為多個(gè)對(duì)象名時(shí),用逗號(hào)進(jìn)行分隔。聲明對(duì)象的作用是創(chuàng)建對(duì)象空間的管理者。例號(hào)
50、進(jìn)行分隔。聲明對(duì)象的作用是創(chuàng)建對(duì)象空間的管理者。例如如:dog doga,dogb;上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)這個(gè)語句聲明了這個(gè)語句聲明了dog類的兩個(gè)對(duì)象類的兩個(gè)對(duì)象doga, dogb,它們可,它們可以被用來引用實(shí)際的以被用來引用實(shí)際的dog類對(duì)象空間,但必須明自此時(shí),類對(duì)象空間,但必須明自此時(shí),doga和,和,dogb只是兩個(gè)將來可以引用真正只是兩個(gè)將來可以引用真正dog類實(shí)例的類實(shí)例的對(duì)象名,還并不具備具體內(nèi)存空間。對(duì)象名,還并不具備具體內(nèi)存空間。2.建立對(duì)象建立對(duì)象所謂建立對(duì)象,實(shí)際上就是用所謂建立對(duì)象,實(shí)際上就是用java提供的提供的new關(guān)鍵字為對(duì)關(guān)鍵字為
51、對(duì)象分配存儲(chǔ)空間。在聲明對(duì)象時(shí),只確定了對(duì)象的名稱和它象分配存儲(chǔ)空間。在聲明對(duì)象時(shí),只確定了對(duì)象的名稱和它所屬的類,并沒有為對(duì)象分配存儲(chǔ)空間,此時(shí)對(duì)象還不是類所屬的類,并沒有為對(duì)象分配存儲(chǔ)空間,此時(shí)對(duì)象還不是類的實(shí)例。只有通過建立對(duì)象這一步,才為對(duì)象分配內(nèi)存,使的實(shí)例。只有通過建立對(duì)象這一步,才為對(duì)象分配內(nèi)存,使該對(duì)象成為類的實(shí)例。建立對(duì)象的格式如下該對(duì)象成為類的實(shí)例。建立對(duì)象的格式如下:上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)對(duì)象名對(duì)象名=new構(gòu)造方法構(gòu)造方法();例如例如:doga = new dog();也可以在聲明對(duì)象的同時(shí)建立對(duì)象,這稱為創(chuàng)建一個(gè)對(duì)象。也可以在聲明對(duì)象的同
52、時(shí)建立對(duì)象,這稱為創(chuàng)建一個(gè)對(duì)象。創(chuàng)建對(duì)象的格式如下創(chuàng)建對(duì)象的格式如下:類名對(duì)象名類名對(duì)象名=new構(gòu)造方法構(gòu)造方法();例如例如:dog doga = new dog();其中其中:new是是java的關(guān)鍵字,也可將其稱為運(yùn)算符,因?yàn)榈年P(guān)鍵字,也可將其稱為運(yùn)算符,因?yàn)閚ew的作用是建立對(duì)象,為對(duì)象分配存儲(chǔ)空間。執(zhí)行的作用是建立對(duì)象,為對(duì)象分配存儲(chǔ)空間。執(zhí)行new dog將產(chǎn)生一個(gè)將產(chǎn)生一個(gè)dog類的對(duì)象類的對(duì)象(具備內(nèi)存空間具備內(nèi)存空間)。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)3.初始化對(duì)象初始化對(duì)象初始化對(duì)象是指由一個(gè)類生成一個(gè)對(duì)象時(shí),為這個(gè)對(duì)象確定初始化對(duì)象是指由一個(gè)類生成一個(gè)
53、對(duì)象時(shí),為這個(gè)對(duì)象確定初始狀態(tài),即給它的數(shù)據(jù)成員賦初值的過程,當(dāng)然,它主要初始狀態(tài),即給它的數(shù)據(jù)成員賦初值的過程,當(dāng)然,它主要由一些賦值語句組成。由一些賦值語句組成。例如例如:由于初始化操作是最常用的操作之一,為簡化這一過程,由于初始化操作是最常用的操作之一,為簡化這一過程,java還提供了專用的方法來完成它,即前面剛剛介紹的構(gòu)造還提供了專用的方法來完成它,即前面剛剛介紹的構(gòu)造方法。對(duì)象創(chuàng)建的三個(gè)步驟在內(nèi)存中都起廠相應(yīng)的變化,如方法。對(duì)象創(chuàng)建的三個(gè)步驟在內(nèi)存中都起廠相應(yīng)的變化,如表表3-1所示。所示。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)從上表從上表3-1中可以看出,聲明對(duì)象時(shí)僅僅
54、定義一個(gè)該類的引中可以看出,聲明對(duì)象時(shí)僅僅定義一個(gè)該類的引用變量,這時(shí)候該引用變量的值為用變量,這時(shí)候該引用變量的值為null,意為該引用此時(shí)與,意為該引用此時(shí)與任何實(shí)體空間無關(guān)。在建立對(duì)象階段,通過任何實(shí)體空間無關(guān)。在建立對(duì)象階段,通過new關(guān)鍵字申請(qǐng)關(guān)鍵字申請(qǐng)了一個(gè)了一個(gè)dog類的對(duì)象空間,并同時(shí)返回廠該空間的首地址,類的對(duì)象空間,并同時(shí)返回廠該空間的首地址,假設(shè)該空間首地址為假設(shè)該空間首地址為f000,那在執(zhí)行那在執(zhí)行doga = new dog();語句時(shí),實(shí)際上是把地址值語句時(shí),實(shí)際上是把地址值“f000”賦值給了引用變量賦值給了引用變量doga,注意此時(shí),雖然一個(gè),注意此時(shí),雖然一
55、個(gè)dog對(duì)象已經(jīng)創(chuàng)建,但該對(duì)象對(duì)象已經(jīng)創(chuàng)建,但該對(duì)象內(nèi)部的兩個(gè)成員變量內(nèi)部的兩個(gè)成員變量weight和和height是沒有被賦值的。在是沒有被賦值的。在初始化階段,我們才真正對(duì)這兩個(gè)成員變量賦具體值。初始化階段,我們才真正對(duì)這兩個(gè)成員變量賦具體值。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)二、傳值引用與傳址引用二、傳值引用與傳址引用java程序中,當(dāng)變量間發(fā)生賦值動(dòng)作時(shí),涉及到傳值引用與程序中,當(dāng)變量間發(fā)生賦值動(dòng)作時(shí),涉及到傳值引用與傳址引用的問題。所謂傳值,即指?jìng)髦芬玫膯栴}。所謂傳值,即指“=”號(hào)兩端變量各自具有號(hào)兩端變量各自具有獨(dú)立的值空間,右端變量把自身的變量值復(fù)制給左端變量,
56、獨(dú)立的值空間,右端變量把自身的變量值復(fù)制給左端變量,這種方式發(fā)生在基本數(shù)據(jù)類型變量間的賦值操作。所謂傳址,這種方式發(fā)生在基本數(shù)據(jù)類型變量間的賦值操作。所謂傳址,右端變量把自身引用右端變量把自身引用(管理管理)的內(nèi)存空間的首地址復(fù)制給左端的內(nèi)存空間的首地址復(fù)制給左端變量,這樣變量,這樣“=”號(hào)兩端變量共同引用號(hào)兩端變量共同引用(管理管理)一個(gè)內(nèi)存空間,一個(gè)內(nèi)存空間,這種方式發(fā)生在對(duì)象變量間的賦值操作。這種方式發(fā)生在對(duì)象變量間的賦值操作。傳值引用與傳址引用操作相應(yīng)的內(nèi)存變化狀況如下傳值引用與傳址引用操作相應(yīng)的內(nèi)存變化狀況如下表表3-2所所示。示。上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)從
57、上表從上表3-2可以看出,執(zhí)行可以看出,執(zhí)行int b = a;語句時(shí),基本數(shù)據(jù)類語句時(shí),基本數(shù)據(jù)類型變量型變量b具備自身獨(dú)立的內(nèi)存空間,該空間內(nèi)的值是對(duì)變量具備自身獨(dú)立的內(nèi)存空間,該空間內(nèi)的值是對(duì)變量a的值的簡單復(fù)制的值的簡單復(fù)制;執(zhí)行執(zhí)行dog dogb =doga時(shí),對(duì)象型變量時(shí),對(duì)象型變量dogb僅僅是復(fù)制僅僅是復(fù)制r對(duì)象型變量對(duì)象型變量doga所引用所引用(管理管理)的具體對(duì)的具體對(duì)象內(nèi)存空間的首地址象內(nèi)存空間的首地址(也即也即doga變量本身的值變量本身的值),而不是復(fù),而不是復(fù)制制doga所引用所引用(管理管理)的具體對(duì)象,這樣導(dǎo)致對(duì)象型變量的具體對(duì)象,這樣導(dǎo)致對(duì)象型變量dogb
58、和和doga具有共同的地址值,也即管理著一個(gè)共同的具有共同的地址值,也即管理著一個(gè)共同的對(duì)象內(nèi)存空間。對(duì)象內(nèi)存空間。三、自動(dòng)垃圾收集機(jī)制三、自動(dòng)垃圾收集機(jī)制上一頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)在在java中,對(duì)于類對(duì)象的創(chuàng)建都需要使用中,對(duì)于類對(duì)象的創(chuàng)建都需要使用new關(guān)鍵詞,它關(guān)鍵詞,它向系統(tǒng)運(yùn)行時(shí)申請(qǐng)指定類的一個(gè)對(duì)象的內(nèi)存空間,并把該內(nèi)向系統(tǒng)運(yùn)行時(shí)申請(qǐng)指定類的一個(gè)對(duì)象的內(nèi)存空間,并把該內(nèi)存空間的首地址返回。那么當(dāng)程序中不再需要這些通過存空間的首地址返回。那么當(dāng)程序中不再需要這些通過new創(chuàng)建的對(duì)象時(shí),怎么辦呢創(chuàng)建的對(duì)象時(shí),怎么辦呢?大家回想一下,在大家回想一下,在c/c +里
59、面,里面,有相應(yīng)的有相應(yīng)的malloc()/free()和和new()/delete ()兩對(duì)函兩對(duì)函數(shù)來操作空間申請(qǐng)和釋放。而數(shù)來操作空間申請(qǐng)和釋放。而java中,而無相應(yīng)的關(guān)鍵詞來中,而無相應(yīng)的關(guān)鍵詞來申請(qǐng)對(duì)象空間,而無相應(yīng)的關(guān)鍵詞來刪除對(duì)象空間。難道申請(qǐng)對(duì)象空間,而無相應(yīng)的關(guān)鍵詞來刪除對(duì)象空間。難道java中只許用戶申請(qǐng)空間而不能刪除這些空間嗎中只許用戶申請(qǐng)空間而不能刪除這些空間嗎?答案是否答案是否定的,其實(shí)定的,其實(shí)java內(nèi)部提供了一種稱為自動(dòng)垃圾收集的機(jī)制來內(nèi)部提供了一種稱為自動(dòng)垃圾收集的機(jī)制來執(zhí)行此項(xiàng)任務(wù),這也是執(zhí)行此項(xiàng)任務(wù),這也是java的安全性措施之一。的安全性措施之一。上一
60、頁 下一頁返回3.3 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí)java的自動(dòng)垃圾收集機(jī)制通過多種算法的自動(dòng)垃圾收集機(jī)制通過多種算法(如引用計(jì)數(shù)法如引用計(jì)數(shù)法(reference counting collector) , tracing算法算法(tracing collector)等等)來確定哪些對(duì)象空間需要被刪除,來確定哪些對(duì)象空間需要被刪除,無須用戶主動(dòng)性地去刪除那些通過無須用戶主動(dòng)性地去刪除那些通過new申請(qǐng)來的對(duì)象空間。申請(qǐng)來的對(duì)象空間。雖然雖然java中不需要也不建議大家去主動(dòng)釋放動(dòng)態(tài)對(duì)象空間,中不需要也不建議大家去主動(dòng)釋放動(dòng)態(tài)對(duì)象空間,但還是提供了主動(dòng)釋放空間的途徑,即使用但還是提供了主動(dòng)釋放空間
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑粉采購合同塑料制品購銷合同
- 歷史文物保護(hù)與修復(fù)技術(shù)試卷分析
- 玻璃體相關(guān)知識(shí)培訓(xùn)課件
- 港口裝卸與倉儲(chǔ)管理作業(yè)指導(dǎo)書
- 家庭家居保潔服務(wù)合同書
- 森林碳匯項(xiàng)目開發(fā)與合作協(xié)議
- 任務(wù)6.2.4 建筑物沉降觀測(cè)
- 安全生產(chǎn)承包的合同
- 氣象基礎(chǔ)知識(shí)培訓(xùn)課件
- 面向客戶的宣傳資料制作方案
- 油田勘測(cè)設(shè)計(jì)行業(yè)發(fā)展概況及未來三年行業(yè)發(fā)展趨勢(shì)預(yù)測(cè)
- 致病菌引起的食品安全事件
- 浙江省溫州市(2024年-2025年小學(xué)五年級(jí)語文)人教版期中考試(下學(xué)期)試卷及答案
- 企業(yè)員工背景審查制度
- 數(shù)據(jù)要素白皮書(2024年)-中國通信標(biāo)準(zhǔn)化協(xié)會(huì)
- 鋼管樁工程施工方案
- 《魏書生班主任工作漫談》讀書心得體會(huì)課件
- 冰淇淋店選址與競(jìng)爭環(huán)境分析
- 領(lǐng)導(dǎo)干部離任交接表
- 儲(chǔ)運(yùn)安全檢查分析(SCL)評(píng)價(jià)記錄
- 人教版六年級(jí)上冊(cè)道德與法治教案(5篇)
評(píng)論
0/150
提交評(píng)論