版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
抽象封裝與類第1頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)24.1抽象與封裝一、抽象抽象是科學(xué)研究中經(jīng)常使用的一種方法,即去除掉被研究對(duì)象中與主旨無關(guān)的次要部分,或是暫時(shí)不予考慮的部分,而僅僅抽取出與研究工作有關(guān)的實(shí)質(zhì)性的內(nèi)容加以考察。在計(jì)算機(jī)技術(shù)的軟件開發(fā)方法中所使用的抽象有兩類:一類是過程抽象,另一類是數(shù)據(jù)抽象。
第2頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)3過程抽象將整個(gè)系統(tǒng)的功能劃分為若干部分,強(qiáng)調(diào)功能完成的過程和步驟。面向過程的軟件開發(fā)方法采用的就是這種抽象方法。使用過程抽象有利于控制、降低整個(gè)程序的復(fù)雜度,但是這種方法本身自由度較大,難于規(guī)范化和標(biāo)準(zhǔn)化,操作起來有一定難度,在質(zhì)量上不易保證。數(shù)據(jù)抽象是與過程抽象不同的抽象方法,它把系統(tǒng)中需要處理的數(shù)據(jù)和這些數(shù)據(jù)上的操作結(jié)合在一起,根據(jù)功能、性質(zhì)、作用等因素抽象成不同的抽象數(shù)據(jù)類型。每個(gè)抽象數(shù)據(jù)類型既包含了數(shù)據(jù),也包含了針對(duì)這些數(shù)據(jù)的授權(quán)操作,是相對(duì)于過程抽象更為嚴(yán)格、也更為合理的抽象方法。第3頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)4面向?qū)ο蟮能浖_發(fā)方法的主要特點(diǎn)之一,就是采用了數(shù)據(jù)抽象的方法來構(gòu)建程序的類、對(duì)象和方法。面向?qū)ο筌浖_發(fā)過程中的面向?qū)ο蟮姆治觯褪菍?duì)實(shí)際問題進(jìn)行抽象,從而建立物理模型的過程。在面向?qū)ο蠹夹g(shù)中使用這種數(shù)據(jù)抽象方法,一方面可以去除掉與核心問題無關(guān)的細(xì)枝末節(jié),使開發(fā)工作可以集中在比較關(guān)鍵、主要的部分;另一方面,在數(shù)據(jù)抽象過程中對(duì)數(shù)據(jù)和操作的分析、辨別和定義可以幫助開發(fā)人員對(duì)整個(gè)問題有更深入、準(zhǔn)確的認(rèn)識(shí)。最后抽象形成的抽象數(shù)據(jù)類型,則是進(jìn)一步設(shè)計(jì)、編程的基礎(chǔ)和依據(jù)。第4頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)5面向?qū)ο蟮能浖_發(fā)方法對(duì)象計(jì)算機(jī)世界抽象數(shù)據(jù)類概念世界實(shí)體現(xiàn)實(shí)世界抽象抽象實(shí)例化映射計(jì)算機(jī)邏輯的實(shí)現(xiàn)類第5頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)6現(xiàn)實(shí)生活中的實(shí)體可以將現(xiàn)實(shí)生活中的實(shí)體經(jīng)過抽象,映射為程序中的對(duì)象。對(duì)象在程序中是通過一種抽象數(shù)據(jù)類型來描述的,這種抽象數(shù)據(jù)類型稱為類(class)。classCar
{StringcarNumber;Stringcolor;intdoorNumber;
……
voidbrake(){…}voidspeedUp(){…}voidslowDown(){…}}
第6頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)7二、封裝面向?qū)ο蠓椒ǖ姆庋b特性是一個(gè)與其抽象特性密切相關(guān)的特性。具體地,封裝就是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型的內(nèi)部,系統(tǒng)的其他部分只有通過包裹在數(shù)據(jù)外面的被授權(quán)的操作,才能夠與這個(gè)抽象數(shù)據(jù)類型交流和交互。屬性方法公有數(shù)據(jù)私有數(shù)據(jù)方法對(duì)象A數(shù)據(jù)方法對(duì)象B第7頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)8在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,抽象數(shù)據(jù)類型是用“類”這種面向?qū)ο蠊ぞ呖衫斫夂筒倏v的結(jié)構(gòu)來代表的,每個(gè)類里都封裝了相關(guān)的數(shù)據(jù)和操作。在實(shí)際的開發(fā)過程中,類多用來構(gòu)建系統(tǒng)內(nèi)部的模塊,由于封裝特性把類內(nèi)的數(shù)據(jù)保護(hù)得很嚴(yán)密,模塊與模塊間僅通過嚴(yán)格控制的界面進(jìn)行交互,使它們之間耦合和交叉大大減少,從而降低了開發(fā)過程的復(fù)雜性,提高了效率和質(zhì)量,減少了可能的錯(cuò)誤,同時(shí)也保證了程序中數(shù)據(jù)的完整性和安全性。第8頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)9面向?qū)ο蠹夹g(shù)的這種封裝特性還有另一個(gè)重要意義,就是使抽象數(shù)據(jù)類型,即類或模塊的可重用性大為提高。封裝使得抽象數(shù)據(jù)類型對(duì)內(nèi)成為一個(gè)結(jié)構(gòu)完整、可自我管理、自我平衡、高度集中的整體;對(duì)外則是一個(gè)功能明確、接口單一、可在各種合適的環(huán)境下都能獨(dú)立工作的有機(jī)的單元。這樣的有機(jī)單元特別有利于構(gòu)建、開發(fā)大型標(biāo)準(zhǔn)化的應(yīng)用軟件系統(tǒng),可以大幅度地提高生產(chǎn)效率,縮短開發(fā)周期和降低各種費(fèi)用。第9頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)10封裝是一種數(shù)據(jù)隱藏技術(shù),用戶只能看到封裝界面上的信息,對(duì)象內(nèi)部對(duì)用戶是不可見的。封裝把對(duì)象的所有組成部分(包括數(shù)據(jù)和方法)組合在一起,定義了程序如何引用對(duì)象的數(shù)據(jù);封裝實(shí)際上使用方法將類的數(shù)據(jù)隱藏起來,控制用戶對(duì)類的數(shù)據(jù)(域、屬性)修改和訪問的權(quán)限。被封裝的對(duì)象之間是通過傳遞消息來進(jìn)行聯(lián)系的。一個(gè)消息由三部分組成:消息的接受對(duì)象接收對(duì)象要采取的方法方法需要的參數(shù)對(duì)象B對(duì)象A
消息第10頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)11為什么要使用類?采用簡(jiǎn)單數(shù)據(jù)類型表示現(xiàn)實(shí)世界中概念的局存在很大的限性。例如:采用int型數(shù)據(jù)表示一個(gè)日期概念,需要使用3個(gè)變量:
intday,month,year;并且在使用中必須時(shí)刻注意三者的聯(lián)系和約束關(guān)系同時(shí)在使用日期概念時(shí)要同時(shí)對(duì)三個(gè)對(duì)象進(jìn)行訪問使用類可以把現(xiàn)實(shí)問題中的對(duì)象映射為程序中的一個(gè)整體——類。第11頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)124.2Java的類一、系統(tǒng)定義的類Java程序設(shè)計(jì)就是定義類的過程,但是Java程序中定義的類的數(shù)目和功能都是有限的,編程時(shí)還需要用到大量的系統(tǒng)定義好的類,即Java類庫(kù)中的類。類庫(kù)是Java語(yǔ)言的重要組成部分。Java語(yǔ)言由語(yǔ)法規(guī)則和類庫(kù)兩部分組成,語(yǔ)法規(guī)則確定Java程序的書寫規(guī)范;類庫(kù),或稱為運(yùn)行時(shí)庫(kù),則提供了Java程序與運(yùn)行它的系統(tǒng)軟件(Java虛擬機(jī))之間的接口。Java類庫(kù)是一組由其他開發(fā)人員或軟件供應(yīng)商編寫好的Java程序模塊,每個(gè)模塊通常對(duì)應(yīng)一種特定的基本功能和任務(wù),這樣當(dāng)自己編寫的Java程序需要完成其中某一功能的時(shí)候,就可以直接利用這些現(xiàn)成的類庫(kù),而不需要一切從頭編寫。第12頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)13這些系統(tǒng)定義好的類根據(jù)實(shí)現(xiàn)的功能不同,可以劃分成不同的集合。每個(gè)集合是一個(gè)包,合稱為類庫(kù)。Java的類庫(kù)是系統(tǒng)提供的已實(shí)現(xiàn)的標(biāo)準(zhǔn)類的集合,是Java編程的API(applicationprograminterface),它可以幫助開發(fā)者方便、快捷地開發(fā)Java程序。Java的類庫(kù)大部分是由它的發(fā)明者SUN公司提供的。這些類庫(kù)稱為基礎(chǔ)類庫(kù)(JFC),也有少量則是由其他軟件開發(fā)商以商品形式提供的。根據(jù)功能的不同,Java的類庫(kù)被劃分為若干個(gè)不同的包,每個(gè)包中都有若干個(gè)具有特定功能和相互關(guān)系的類和接口。下面列出了一些經(jīng)常使用的包。第13頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)141.
java.lang包java.lang包是Java語(yǔ)言的核心類庫(kù),包含了運(yùn)行Java程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類等。每個(gè)Java程序運(yùn)行時(shí),系統(tǒng)都會(huì)自動(dòng)地引入java.lang包,所以這個(gè)包的加載是缺省的。2.java.io包java.io包是Java語(yǔ)言的標(biāo)準(zhǔn)輸入/輸出類庫(kù),包含了實(shí)現(xiàn)Java程序與操作系統(tǒng)、用戶界面以及其他Java程序做數(shù)據(jù)交換所使用的類,如基本輸入/輸出流、文件輸入/輸出流、過濾輸入/輸出流、管道輸入/輸出流、隨機(jī)輸入/輸出流等。凡是需要完成與操作系統(tǒng)有關(guān)的較底層的輸入輸出操作的Java程序,都要用到j(luò)ava.io包。第14頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)153.java.util包java.util包包括了Java語(yǔ)言中的一些低級(jí)的實(shí)用工具,如處理時(shí)間的Date類,處理變長(zhǎng)數(shù)組的Vector類,實(shí)現(xiàn)棧和雜湊表的Stack類和HashTable類等,使用它們開發(fā)者可以更方便快捷地編程。4.java.awt包java.awt包是Java語(yǔ)言用來構(gòu)建圖形用戶界面(GUI)的類庫(kù),它包括了許多界面元素和資源,主要在三個(gè)方面提供界面設(shè)計(jì)支持:低級(jí)繪圖操作,如Graphics類等;圖形界面組件和布局管理,如Checkbox類、Container類、LayoutManager接口等;以及界面用戶交互控制和事件響應(yīng),如Event類。利用java.awt包,開發(fā)人員可以很方便地編寫出美觀、方便、標(biāo)準(zhǔn)化的應(yīng)用程序界面。第15頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)167.java.applet包Java.applet包是用來實(shí)現(xiàn)運(yùn)行于Internet瀏覽器中的JavaApplet的工具類庫(kù),它僅包含少量幾個(gè)接口和一個(gè)非常有用的類:java.applet.Applet。8.包包是Java語(yǔ)言用來實(shí)現(xiàn)網(wǎng)絡(luò)功能的類庫(kù)。由于Java語(yǔ)言還在不停地發(fā)展和擴(kuò)充,它的功能,尤其是網(wǎng)絡(luò)功能,也在不斷地?cái)U(kuò)充。目前已經(jīng)實(shí)現(xiàn)的Java網(wǎng)絡(luò)功能主要有:底層的網(wǎng)絡(luò)通信,如實(shí)現(xiàn)套接字通信的Socket類、ServerSocket類;編寫用戶自己的Telnet、FTP、郵件服務(wù)等實(shí)現(xiàn)網(wǎng)上通信的類;用于訪問Internet上資源和進(jìn)行CGI網(wǎng)關(guān)調(diào)用的類,如URL等。利用包中的類,開發(fā)者可以編寫自己的具有網(wǎng)絡(luò)功能的程序。第16頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)1715.java.awt.event包java.awt.event包是對(duì)JDK1.0版本中原有的Event類的一個(gè)擴(kuò)充,它使得程序可以用不同的方式來處理不同類型的事件,并使每個(gè)圖形界面的元素本身可以擁有處理它上面事件的能力。16.java.sql包java.sql包是實(shí)現(xiàn)JDBC(Javadatabaseconnection)的類庫(kù)。利用這個(gè)包可以使Java程序具有訪問不同種類的數(shù)據(jù)庫(kù)的功能,如Oracle,Sybase,DB2,SQLServer等。只要安裝了合適的驅(qū)動(dòng)程序,同一個(gè)Java程序不需修改就可以存取、修改這些不同的數(shù)據(jù)庫(kù)中的數(shù)據(jù)。JDBC的這種功能,再加上Java程序本身具有的平臺(tái)無關(guān)性,大大拓寬了Java程序的應(yīng)用范圍,尤其是商業(yè)應(yīng)用的適用領(lǐng)域。第17頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)18使用類庫(kù)中系統(tǒng)定義好的類有三種方式:繼承系統(tǒng)類,在用戶程序里創(chuàng)建系統(tǒng)類的子類,例如每個(gè)JavaApplet的主類都是java.applet包中的Applet類的子類;創(chuàng)建系統(tǒng)類的對(duì)象,例如圖形界面的程序中要接受用戶的輸入時(shí),就可以創(chuàng)建一個(gè)系統(tǒng)類TextField類的對(duì)象來完成這個(gè)任務(wù);直接使用系統(tǒng)類,例如在字符界面向系統(tǒng)標(biāo)準(zhǔn)輸出輸出字符串時(shí)使用的方法System.out.println(),就是系統(tǒng)類System的靜態(tài)屬性out的方法。第18頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)19系統(tǒng)類的使用:使用系統(tǒng)類的前提條件是這個(gè)系統(tǒng)類應(yīng)該是用戶程序可見的類。為此用戶程序需要用import語(yǔ)句引入它所用到的系統(tǒng)類或系統(tǒng)類所在的包。例如使用圖形用戶界面的程序,應(yīng)該用語(yǔ)句:
importjava.awt.*; importjava.awt.event.*;引入java.awt包和java.awt.event包。類庫(kù)包中的程序都是字節(jié)碼形式的程序,利用import語(yǔ)句將一個(gè)包引入到程序里,就相當(dāng)于在編譯過程中將該包中所有系統(tǒng)類的字節(jié)碼加入到用戶的Java程序中,這樣用戶Java程序就可以使用這些系統(tǒng)類及其中的各種功能。第19頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)20要認(rèn)識(shí)到:用戶程序中系統(tǒng)類庫(kù)使用得越多、越全面、越準(zhǔn)確,程序的質(zhì)量就越高。因此,要掌握好Java語(yǔ)言面向?qū)ο蟮木幊谭椒ň帉懗龈哔|(zhì)量的程序,就必須對(duì)Java語(yǔ)言的類庫(kù)有足夠的了解和掌握。第20頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)21用戶程序自定義類系統(tǒng)定義的類,雖然實(shí)現(xiàn)了許多常見的功能,但是在Java語(yǔ)言程序設(shè)計(jì)中,用戶仍要根據(jù)編程的需要來定義一些類。類作為復(fù)合(引用)數(shù)據(jù)類型,它封裝了一類對(duì)象的域和方法。創(chuàng)建一個(gè)類,就是創(chuàng)建一個(gè)新的數(shù)據(jù)類型,實(shí)例化一個(gè)類就得到一個(gè)具體的對(duì)象。第21頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)22類定義的格式[public][abstract|final]class
類名[extends
父類名][implements
接口名表]……類頭{
域;方法;……類體}第22頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)23例4-11:classPhoneCard2:
{3:longcardNumber;4:privateintpassword;5:doublebalance;6:StringconnectNumber;7:booleanconnected;8:9:booleanperformConnection(longcn,intpw)
10:
{11:if(cn==cardNumber&&pw==password)12:{13:connected=true;14:returntrue;15:}16:else17:{
18:connected=false;19:returnfalse;20:}21:
}22:doublegetBalance()23:
{24:if(connected)25:returnbalance;26:else27:return-1;28:
}29:voidperformDial()30:{31:if(connected)32:balance-=0.5;33:
}34:}第23頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)24創(chuàng)建對(duì)象與定義構(gòu)造函數(shù)
1.創(chuàng)建對(duì)象Java程序定義類的最終目的是使用它,像使用系統(tǒng)類一樣,程序也可以繼承用戶自定義類或創(chuàng)建并使用自定義類的對(duì)象。創(chuàng)建對(duì)象與聲明基本數(shù)據(jù)類型的變量類似,首先說明新建對(duì)象所屬的類名,然后說明新建對(duì)象的名字,賦值號(hào)右邊的new是為新建對(duì)象開辟內(nèi)存空間的算符。像聲明變量需要為變量開辟內(nèi)存空間保存數(shù)據(jù)一樣,創(chuàng)建對(duì)象也需要為對(duì)象開辟內(nèi)存空間保存域和方法。與變量相比,對(duì)象占用的內(nèi)存空間要大得多,對(duì)象是以類為模板創(chuàng)建的具體實(shí)例。第24頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)25創(chuàng)建對(duì)象的一般格式為:
類名新建對(duì)象名=new構(gòu)造函數(shù)();創(chuàng)建PhoneCard類的對(duì)象可以使用如下的語(yǔ)句:
PhoneCardmyCard=newPhoneCard();一個(gè)類可以生成多個(gè)不同的對(duì)象(實(shí)例),同一個(gè)類的所有對(duì)象具有相同的性質(zhì),即其外部特性和內(nèi)部特性都是相同的。一個(gè)對(duì)象的內(nèi)部狀態(tài)(私有屬性)只能由其自身來修改,任何別的對(duì)象都不能來修改它。因此,同一類的對(duì)象雖然在內(nèi)部狀態(tài)的表現(xiàn)形式上相同,但他們可以有不同的內(nèi)部狀態(tài),這些對(duì)象并不是一模一樣的。第25頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)26Carcar1=newCar();
Carcar2=newCar();
Carcar3=newCar();
要訪問或調(diào)用一個(gè)對(duì)象的域或方法需要首先訪問這個(gè)對(duì)象,然后用算符“.”連接這個(gè)對(duì)象的某個(gè)域或方法。例如:
car1.color=“red”;car1.speedUp();調(diào)用對(duì)象的方法相當(dāng)于給對(duì)象發(fā)送消息,收到消息的對(duì)象通過改變自身的狀態(tài)或者向其它對(duì)象發(fā)送消息來響應(yīng)消息。第26頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)27構(gòu)造函數(shù)(constructor)創(chuàng)建對(duì)象與聲明變量的另一個(gè)不同之處在于,創(chuàng)建對(duì)象的同時(shí)將調(diào)用這個(gè)對(duì)象的構(gòu)造函數(shù)完成對(duì)象的初始化工作。聲明變量時(shí)可以用賦值語(yǔ)句為它賦初值,而一個(gè)對(duì)象可能包括若干個(gè)域,需要若干個(gè)賦值語(yǔ)句,把若干個(gè)賦初值的語(yǔ)句組合成一個(gè)方法在創(chuàng)建對(duì)象時(shí)一次性同時(shí)執(zhí)行,這個(gè)方法就是構(gòu)造函數(shù)。構(gòu)造函數(shù)是與類同名的方法,創(chuàng)建對(duì)象的語(yǔ)句用new算符開辟了新建對(duì)象的內(nèi)存空間之后,將調(diào)用構(gòu)造函數(shù)初始化這個(gè)新建對(duì)象。第27頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)28構(gòu)造函數(shù)是類的一種特殊方法,它的特殊性主要體現(xiàn)在如下的幾個(gè)方面:
(1)構(gòu)造函數(shù)的方法名與類名相同。
(2)構(gòu)造函數(shù)沒有返回類型。
(3)構(gòu)造函數(shù)的主要作用是完成對(duì)類對(duì)象的初始化工作。
(4)構(gòu)造函數(shù)一般不能由編程人員顯式直接調(diào)用。
(5)在創(chuàng)建一個(gè)類的新對(duì)象的同時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造函數(shù)為新對(duì)象初始化。注意:對(duì)象的域在對(duì)象初始化時(shí)自動(dòng)初始化,沒有初值的域都取為缺省值;而對(duì)象方法中的變量必須有初值,否則編譯時(shí)出錯(cuò)。第28頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)29例如,可以為PhoneCard類定義如下的構(gòu)造函數(shù),初始化它的幾個(gè)域。PhoneCard(longcn,intpw,doubleb,Strings) { cardNumber=cn; password=pw; if(b>0) balance=b; else System.exit(1); connectNumber=s; connected=false; }第29頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)30定義了構(gòu)造函數(shù)之后,就可以用如下的語(yǔ)句創(chuàng)建并初始化PhoneCard對(duì)象:PhoneCardnewCard=newPhoneCard(12345678,1234,50.0,”300”);這個(gè)對(duì)象的卡號(hào)是12345678,密碼是1234,金額是50.0,電話卡的接入號(hào)碼是字符串“300”??梢姌?gòu)造函數(shù)定義了幾個(gè)形式參數(shù),創(chuàng)建對(duì)象的語(yǔ)句在調(diào)用構(gòu)造函數(shù)時(shí)就應(yīng)該提供幾個(gè)類型順序一致的實(shí)際參數(shù),指明新建對(duì)象各域的初始值。利用這種機(jī)制就可以創(chuàng)建不同初始特性的同類對(duì)象。第30頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)31在一個(gè)類中可以定義多個(gè)不同形式參數(shù)的構(gòu)造函數(shù),這樣可通過調(diào)用不同的構(gòu)造函數(shù)來創(chuàng)建對(duì)象;如果用戶自定義類未定義類的構(gòu)造函數(shù),系統(tǒng)將為這個(gè)類缺省定義一個(gè)空構(gòu)造函數(shù),沒有形式參數(shù),也沒有任何具體語(yǔ)句,不完成任何操作。構(gòu)造函數(shù)的特點(diǎn)有:(1)構(gòu)造函數(shù)和類具有相同的名字。(2)一個(gè)類可以有多個(gè)構(gòu)造函數(shù)。(3)構(gòu)造函數(shù)可以有0個(gè)、1個(gè)或多個(gè)參數(shù)。(4)構(gòu)造函數(shù)沒有返回值。(5)構(gòu)造函數(shù)總是和new運(yùn)算符一起被調(diào)用例4-2是使用PhoneCard類的一個(gè)完整例子。第31頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)324.3類的修飾符每個(gè)類都擁有自己的名字空間,它代表類及其方法和變量可以在一定的范圍內(nèi)知道彼此的存在,可以相互使用。Java程序在定義類時(shí),除了使用class關(guān)鍵字標(biāo)識(shí)之外,還可以在class之前增加若干類的修飾符來修飾限定所定義的類的特性。類的修飾符分為訪問控制符和非訪問控制符兩大類:可訪問控制符是:public非訪問控制符有:abstract,final有些類的修飾符也可以用來修飾類中的域或方法。第32頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)33公共類修飾符publicJava語(yǔ)言中類的可訪問控制符只有一個(gè):public即公共的。一個(gè)類被定義為公共類,表明它可以被所有的其它類或其它包中的類所訪問和引用,即這個(gè)類作為一個(gè)整體,是可見的、可以使用的,程序的其它部分可以創(chuàng)建這個(gè)類的對(duì)象、訪問這個(gè)類內(nèi)部可見的(用可訪問控制符public定義的)變量和方法。Java的類是通過包的概念來組織的,包是類的一種松散的集合。處于同一個(gè)包中的類可以不需任何說明而方便地互相訪問和引用,而對(duì)于在不同包中的類,一般說來,它們相互之間是不可見的,當(dāng)然也不可能互相引用。第33頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)34定義在同一個(gè)程序中的所有類屬于一個(gè)包。假如一個(gè)類沒有訪問控制符,說明它具有缺省的訪問控制特性。這種缺省的訪問控制權(quán)規(guī)定該類只能被同一個(gè)包中的類訪問和引用,而不可以被其他包中的類使用,這種訪問特性又稱為包訪問性。通過聲明類的訪問控制符可以使整個(gè)程序結(jié)構(gòu)清晰、嚴(yán)謹(jǐn),減少可能產(chǎn)生的類間干擾和錯(cuò)誤。第34頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)35抽象類abstract凡是用abstract修飾符修飾的類被稱為抽象類。抽象類就是沒有具體對(duì)象的概念類。把各類的公共屬性從它們各自的類定義中抽取出來形成一個(gè)抽象類。抽象類是它的所有子類的公共屬性的集合。鴿子燕子麻雀天鵝鳥第35頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)36例如abstractclassDrawing{abstractvoiddrawDot(intx,inty);voiddrawLine(intx1,inty1,intx2,inty2){//drawusingthedrawDot()methodrepeatedly.
}}抽象類中往往聲明方法的存在而不去實(shí)現(xiàn)它。一個(gè)abstract類可以包含抽象方法、非抽象方法和變量。第36頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)37有時(shí)在庫(kù)開發(fā)中,要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該行為;取而代之,在子類中實(shí)現(xiàn)該方法,知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。這種類就是abstract類。不能創(chuàng)建abstract類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。例如:假設(shè)Employee是抽象類,Engineer及Manager都是其子類,盡管Employee不能創(chuàng)建實(shí)例,但可以這樣使用:
Employeee1=newEngineer();Employeee2=newManager();Abstract類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類。第37頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)38最終類(final)如果一個(gè)類被final修飾符所修飾和限定,說明這個(gè)類不可能有子類。被定義為final的類通常是一些有固定作用、用來完成某種標(biāo)準(zhǔn)功能的類。如Java系統(tǒng)定義好的用來實(shí)現(xiàn)網(wǎng)絡(luò)功能的InetAddress、Socket等類都是final類。在Java程序中,當(dāng)通過類名引用一個(gè)類或其對(duì)象時(shí),實(shí)際真正引用的既可能是這個(gè)類或其對(duì)象本身,也可能是這個(gè)類的某個(gè)子類及子類的對(duì)象,即具有一定的不確定性。將一個(gè)類定義為final則可以將它的內(nèi)容、屬性和功能固定下來,與它的類名形成穩(wěn)定的映射關(guān)系,從而保證引用這個(gè)類時(shí)所實(shí)現(xiàn)的功能的正確無誤。第38頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)39abstract和final修飾符不能同時(shí)修飾一個(gè)類,因?yàn)閍bstract類自身沒有具體對(duì)象,需要派生出子類后再創(chuàng)建子類的對(duì)象;而final類不可能有子類,這樣abstractfinal類就無法使用,也就沒有意義了。abstract和final可以各自與其他修飾符合用。例如一個(gè)類可以是publicabstract的,也可以是publicfinal的。當(dāng)一個(gè)以上的修飾符修飾類(或類中的域、方法)時(shí),這些修飾符之間以空格分開,寫在class關(guān)鍵字之前,修飾符之間的先后排列次序?qū)︻惖男再|(zhì)沒有影響。第39頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)404.4類的靜態(tài)屬性——域域是類和對(duì)象的靜態(tài)屬性,它可以是基本數(shù)據(jù)類型的變量,也可以是其他類(系統(tǒng)類或用戶自定義類)的對(duì)象,所以定義類時(shí)定義域的操作就是說明變量或創(chuàng)建對(duì)象的操作。與類相似,域也可以擁有若干修飾符,包括訪問控制符和非訪問控制符。域的定義格式:[public∣private∣protected
][static][final][transient][volatile]
數(shù)據(jù)類型變量名1[,變量名2];第40頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)41訪問控制符有:public、private、protected;非訪問控制符有:靜態(tài)域修飾符static、最終域修飾符final、易失(共享)域修飾符volatile、暫時(shí)性域修飾符transient。公共訪問控制符public用public修飾的域稱為公共域。如果公共域?qū)儆谝粋€(gè)公共類,則可以被所有其它類所引用。由于public修飾符會(huì)降低運(yùn)行的安全性和數(shù)據(jù)的封裝性,所以一般應(yīng)減少public域的使用。第41頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)42私有訪問控制符private用private修飾的成員變量(域)只能被該類自身所訪問,而不能被任何其它類(包括子類)所引用。private修飾符用來聲明類的私有成員,它提供了最高的保護(hù)級(jí)別。當(dāng)其他類希望獲取或修改私有成員時(shí),需要借助于類的方法來實(shí)現(xiàn),從而保證了私有數(shù)據(jù)的私有性。
publicclassAccount{
privateintaccoutNo;privateintpassword;
……voidsetPassword(inta){password=a;}intgetPassword(){returnpassword;}
……
}
以上方法實(shí)際上實(shí)現(xiàn)了對(duì)成員變量的隱藏。第42頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)43保護(hù)訪問控制符protected用protected修飾的成員變量可以被三種類所引用:該類自身、與它在同一個(gè)包中的其他類、在其他包中的該類的子類。使用protected修飾符的主要作用是允許其他包中的它的子類來訪問父類的特定屬性。類內(nèi)的域如果沒有訪問控制符來限定,也說明它們具有包訪問性,可以被同一個(gè)包中的其他類所訪問和調(diào)用。第43頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)44靜態(tài)域static用static修飾符修飾的域是僅屬于類的靜態(tài)域。靜態(tài)域最本質(zhì)的特點(diǎn)是:它們是類的域,不屬于任何一個(gè)類的具體對(duì)象。它不保存在某個(gè)對(duì)象的內(nèi)存區(qū)間中,而是保存在類的內(nèi)存區(qū)域的公共存儲(chǔ)單元。對(duì)于該類的任何一個(gè)具體對(duì)象而言,靜態(tài)域是一個(gè)公共的存儲(chǔ)單元,任何一個(gè)類的對(duì)象訪問它時(shí),取到的都是相同的數(shù)值;同樣任何一個(gè)類的對(duì)象去修改它時(shí),也都是在對(duì)同一個(gè)內(nèi)存單元進(jìn)行操作。類的靜態(tài)域可以不創(chuàng)建類的對(duì)象即可直接引用。例如:System.out.println();例4-3第44頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)45publicclassTestCounter{publicstaticvoidmain(String[]args){System.out.println("Numberofcounteris"+Count.getTotalCount());Countcount1=newCount();System.out.println("Numberofcounteris"+Count.getTotalCount());}}publicclassCount{privateintserialNumber;privatestaticintcounter=0;publicstaticintgetTotalCount(){returncounter;}publicCount(){counter++;serialNumber=counter;}}Outputis:Numberofcounteris0Numberofcounteris1第45頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)46靜態(tài)初始化器靜態(tài)初始化器是由關(guān)鍵字static引導(dǎo)的一對(duì)大括號(hào)括起的語(yǔ)句組。它的作用與類的構(gòu)造函數(shù)有些相似,都是用來完成初始化的工作,但是靜態(tài)初始化器在三點(diǎn)上與構(gòu)造函數(shù)有根本的不同:(1)構(gòu)造函數(shù)是對(duì)每個(gè)新創(chuàng)建的對(duì)象初始化,而靜態(tài)初始化器是對(duì)類自身進(jìn)行初始化。(2)構(gòu)造函數(shù)是在用new運(yùn)算符產(chǎn)生新對(duì)象時(shí)由系統(tǒng)自動(dòng)執(zhí)行,而靜態(tài)初始化器則是在它所屬的類加載入內(nèi)存時(shí)由系統(tǒng)調(diào)用執(zhí)行。(3)不同于構(gòu)造函數(shù),靜態(tài)初始化器不是方法,沒有方法名、返回值和參數(shù)列表。例4-4第46頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)47最終域程序中經(jīng)常需要定義各種類型的常量,如0.1,″300″等,并為它們?nèi)∫粋€(gè)類似于變量名的標(biāo)識(shí)符名字,這樣就可以在程序中用這個(gè)名字來引用常量,而不是直接使用常量數(shù)值。final就是用來修飾常量的修飾符,一個(gè)類的域如果被聲明為final,那么它的取值在程序的整個(gè)執(zhí)行過程中都不會(huì)改變。如:staticfinalStringconnectNumber=″200″;用final修飾符說明常量時(shí),需要注意以下幾點(diǎn):(1)需要說明常量的數(shù)據(jù)類型。(2)需要同時(shí)指出常量的具體取值。(3)因?yàn)樗蓄悓?duì)象的常量成員,其數(shù)值都固定一致,為了節(jié)省空間,常量通常聲明為static。例Month2.java第47頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)48易失域volatile如果一個(gè)域被volatile修飾符所修飾,說明這個(gè)域可能同時(shí)被幾個(gè)線程所控制和修改,即這個(gè)域不僅僅被當(dāng)前程序所掌握,在運(yùn)行過程中可能存在其他未知的程序操作來影響和改變?cè)撚虻娜≈?。在使用?dāng)中應(yīng)該特別留意這些影響因素。通常,volatile用來修飾接受外部輸入的域。如表示當(dāng)前時(shí)間的變量將由系統(tǒng)的后臺(tái)線程隨時(shí)修改,以保證程序中取到的總是最新的當(dāng)前的系統(tǒng)時(shí)間,所以可以把它定義為易失域。第48頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)49暫時(shí)性域修飾符transienttransient是用來定義一個(gè)暫時(shí)性變量。其特點(diǎn)是:用修飾符transient限定的暫時(shí)性變量,將指定Java虛擬機(jī)認(rèn)定該暫時(shí)性變量不屬于永久狀態(tài),以實(shí)現(xiàn)不同對(duì)象的存檔功能。否則,類中所有變量都是對(duì)象的永久狀態(tài)的一部分,存儲(chǔ)對(duì)象時(shí)必須同時(shí)保存這些變量。第49頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)504.5方法方法是類的動(dòng)態(tài)屬性,標(biāo)志了類所具有的功能和操作,用來把類和對(duì)象的數(shù)據(jù)封裝在一起。Java的方法與其他語(yǔ)言中的函數(shù)或過程類似,是一段用來完成某種操作的程序片斷。方法由方法頭和方法體組成,其一般格式如下:[public∣private∣protected][static][final|abstract][native][synchronized]
返回值類型方法名([形式參數(shù)列表])[throws異常列表]……方法頭{
方法體各語(yǔ)句;……方法體}
第50頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)51小括號(hào)是方法的標(biāo)志,程序使用方法名來調(diào)用方法,形式參數(shù)是方法從調(diào)用它的環(huán)境輸入的數(shù)據(jù),返回值是方法在操作完成后返還給調(diào)用它的環(huán)境的數(shù)據(jù)。定義方法的目的是定義具有相對(duì)獨(dú)立和常用功能的模塊,使程序結(jié)構(gòu)清晰,也利于模塊在不同場(chǎng)合的重復(fù)利用。例4-5PerfectNum.java第51頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)52注意:返回類型可以是任意的Java數(shù)據(jù)類型,當(dāng)一個(gè)方法不需要返回值時(shí),返回類型為void。方法頭中如果指定了非void的返回值類型,方法體中就必須包含一條return語(yǔ)句保證任何情況下都有返回?cái)?shù)值。參數(shù)的類型可以是簡(jiǎn)單數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型(數(shù)組、類或接口),參數(shù)傳遞方式是值傳遞。第52頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)53方法體是對(duì)方法的實(shí)現(xiàn)。它包括局部變量的聲明以及所有合法的Java指令。局部變量的作用域只在該方法內(nèi)部。Java語(yǔ)言中調(diào)用方法有兩類:一類是需要程序書寫專門的調(diào)用命令來調(diào)用的方法,稱為程序調(diào)用方法;
另一類是運(yùn)行過程中系統(tǒng)自動(dòng)調(diào)用的方法,稱為系統(tǒng)方法,例如Applet中init()、start()、paint()等。這兩類方法的定義和使用原則有很大差異。第53頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)54參數(shù)傳遞方式是值傳遞---實(shí)例classA{staticvoidchange(Strings,StringBuffersb){s=“aaaa”;sb.setLength(0);sb.append(“aaaa”);}publicstaticvoidmain(Stringargs[]){Strings=“bbbb”;StringBuffersb=newStringBuffer(“bbbb”);change(s,sb);System.out.println(s);System.out.println(sb);}}輸出結(jié)果:bbbbaaaa第54頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)55方法的控制修飾符也分為:訪問控制符和非訪問控制符兩類。訪問控制符有:public、private、protected。非訪問控制符有:abstract、static、final、native、synchronized。訪問控制符的作用類似于域的修飾符。第55頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)56DDprivateBB缺省BB+CprotectedBApublic缺省public
類屬性與方法A代表所有的類;B代表當(dāng)前類所在的包;C代表當(dāng)前類的所有子類;D代表當(dāng)前類本身。類、屬性和方法的訪問控制第56頁(yè),共75頁(yè),2023年,2月20日,星期一圖4.6程序中的訪問控制區(qū)域第57頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)58抽象方法abstract修飾符abstract修飾的抽象方法是一種僅有方法頭,而沒有具體的方法體和操作實(shí)現(xiàn)的方法。例如抽象類PhoneCard中定義的一個(gè)抽象方法:
abstractvoidperformDial();
沒有方法體的抽象方法performDial()的具體實(shí)現(xiàn),要留到當(dāng)前類的不同子類在它們各自的類定義中完成。也就是說,各子類在繼承了父類的抽象方法之后,再分別用不同的語(yǔ)句和方法體來重新定義它,形成若干個(gè)名字相同,返回值相同,參數(shù)列表也相同,目的一致但是具體實(shí)現(xiàn)有一定差別的方法。第58頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)59使用抽象方法的目的是使所有的抽象類的所有子類對(duì)外都呈現(xiàn)一個(gè)相同名字的方法,是一個(gè)統(tǒng)一的接口。事實(shí)上,為abstract方法書寫方法體是沒有意義的,因?yàn)閍bstract方法所依附的abstract類沒有自己的對(duì)象,只有它的子類才存在具體的對(duì)象,而它的不同子類對(duì)這個(gè)abstract方法有互不相同的實(shí)現(xiàn)方法,除了參數(shù)列表和返回值之外,抽取不出其他的公共點(diǎn)。所以就只能把a(bǔ)bstract方法作為一個(gè)共同的接口,表明當(dāng)前抽象類的所有子類都使用這個(gè)接口來完成相同的功能。第59頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)60定義abstract方法的優(yōu)點(diǎn),就是可以隱藏具體的細(xì)節(jié)信息,使調(diào)用該方法的程序不必過分關(guān)注類及其子類內(nèi)部的具體狀況。由于所有的子類使用的都是相同的方法頭,方法頭里實(shí)際包含了調(diào)用該方法的程序語(yǔ)句所需要了解的全部信息。所有的抽象方法,都必須存在于抽象類之中。一個(gè)非抽象類中出現(xiàn)抽象方法是非法的,也即,一個(gè)抽象類的子類如果不是抽象類,則它必須為父類中的所有抽象方法書寫方法體。不過抽象類不一定只能擁有抽象方法,它可以包含非抽象的方法。例4-6第60頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)61靜態(tài)方法static用static修飾符修飾的方法,是屬于整個(gè)類的類方法;而不用static修飾符限定的方法,是屬于某個(gè)具體類對(duì)象或?qū)嵗姆椒?。聲明一個(gè)方法為static至少有三重含義:(1)調(diào)用這個(gè)方法時(shí),應(yīng)該使用類名做前綴,而不是某一個(gè)具體的對(duì)象名;(2)非static的方法是屬于某個(gè)對(duì)象的方法,在這個(gè)對(duì)象創(chuàng)建時(shí)對(duì)象的方法在內(nèi)存中擁有自己專用的代碼段;而static的方法是屬于整個(gè)類的,它在內(nèi)存中的代碼段將隨著類的定義而分配和裝載,不被任何一個(gè)對(duì)象專有;第61頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)62(3)由于static方法是屬于整個(gè)類的,所以它不能操縱和處理屬于某個(gè)對(duì)象的成員變量,而只能處理屬于整個(gè)類的成員變量,也即,static方法只能處理static域。例如:classStaticError{ Stringmystring=“hello”; publicstaticvoidmain(Stringargs[]){ System.out.println(mystring); }}編譯時(shí)錯(cuò)誤信息:nonstaticvariablemystringcannotbereferencedfromastaticcontext“System.out.println(mystring);”。第62頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)63解決辦法1:將變量改成類變量classStaticError{staticStringmystring=“hello”;publicstaticvoidmain(Stringargs[]){ System.out.println(mystring);}}解決辦法2:先創(chuàng)建一個(gè)類的實(shí)例classNoStaticError{Stringmystring=“hello”;publicstaticvoidmain(Stringargs[]){NoStaticErrornoError=newNoStaticError();System.out.println(noError.mystring);}}第63頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)64publicclassTestCounter{publicstaticvoidmain(String[]args){System.out.println("Numberofcounteris"+Count.getTotalCount());Countcount1=newCount();System.out.println("Numberofcounteris"+Count.getTotalCount());}}publicclassCount{privateintserialNumber;privatestaticintcounter=0;publicstaticintgetTotalCount(){returncounter;}publicCount(){counter++;serialNumber=counter;}}Outputis:Numberofcounteris0Numberofcounteris1第64頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)65方法重載(Overloading)和覆蓋(Overriding)方法的重載是指在一類中多個(gè)方法可以享用相同的名字,但是這些方法的參數(shù)必須不同,或者是參數(shù)個(gè)數(shù)不同,或者是參數(shù)的類型不同。編譯器根據(jù)參數(shù)的個(gè)數(shù)和類型來決定當(dāng)前所使用的方法。如果兩個(gè)方法的聲明中的參數(shù)的類型和個(gè)數(shù)均相同,只是返回類型不同,則編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤,即返回類型不能用來區(qū)分重載的方法。第65頁(yè),共75頁(yè),2023年,2月20日,星期一北京郵電大學(xué)66例如,要打印不同類型的數(shù)據(jù),int,float,Stri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年科研機(jī)構(gòu)高性能電腦采購(gòu)合同
- 2025年度智能停車場(chǎng)安裝工程勞動(dòng)合同范本3篇
- 2024年蘋果品牌授權(quán)與市場(chǎng)推廣合作協(xié)議范文3篇
- 2024年行政合同中的行政優(yōu)益權(quán)探析2篇
- 熱控課程設(shè)計(jì)致謝信
- 二零二五年度安保服務(wù)品牌授權(quán)合同規(guī)范3篇
- 二零二五年度安全生產(chǎn)法律法規(guī)咨詢服務(wù)合同6篇
- 2025年度消防工程勞務(wù)分包及質(zhì)量控制合同范本2篇
- 二零二五年度吊裝貨物吊裝作業(yè)現(xiàn)場(chǎng)通信保障合同范本3篇
- 2025版高性能抗滑樁施工與維護(hù)一體化服務(wù)合同3篇
- 2023年廣東羅浮山旅游集團(tuán)有限公司招聘筆試題庫(kù)及答案解析
- 《社會(huì)主義核心價(jià)值觀》優(yōu)秀課件
- DB11-T1835-2021 給水排水管道工程施工技術(shù)規(guī)程高清最新版
- 《妊娠期糖尿病患者個(gè)案護(hù)理體會(huì)(論文)3500字》
- 解剖篇2-1內(nèi)臟系統(tǒng)消化呼吸生理學(xué)
- 《小學(xué)生錯(cuò)別字原因及對(duì)策研究(論文)》
- 便攜式氣體檢測(cè)報(bào)警儀管理制度
- 酒店安全的管理制度
- (大潔王)化學(xué)品安全技術(shù)說明書
- 2022年科學(xué)道德與學(xué)術(shù)規(guī)范知識(shí)競(jìng)賽決賽題庫(kù)(含答案)
- 市場(chǎng)調(diào)查與預(yù)測(cè)期末復(fù)習(xí)試題10套含答案
評(píng)論
0/150
提交評(píng)論