面向?qū)ο蟮暮诵奶匦訽第1頁
面向?qū)ο蟮暮诵奶匦訽第2頁
面向?qū)ο蟮暮诵奶匦訽第3頁
面向?qū)ο蟮暮诵奶匦訽第4頁
面向?qū)ο蟮暮诵奶匦訽第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟮暮诵奶匦?面向?qū)ο笏枷氤橄笏械某绦蛟O(shè)計(jì)語言都實(shí)現(xiàn)了某種程度上的抽象. 抽象是把問題領(lǐng)域的問題變成計(jì)算機(jī)解決領(lǐng)域內(nèi)的解決方法. 用計(jì)算機(jī)的思想來解釋問題. 面向?qū)ο蠓椒ㄊ翘峁┝耸侄蝸碇苯用枋鰡栴}領(lǐng)域內(nèi)的成分。 我們將問題領(lǐng)域內(nèi)的成分在解決領(lǐng)域內(nèi)表現(xiàn)為對象。 當(dāng)你閱讀OOP的程序時(shí),你即是在閱讀相應(yīng)問題的描述。 OOP允許你以問題本身的術(shù)語來描述問題,而不是解決領(lǐng)域的術(shù)語。 面向?qū)ο蟪绦蛟O(shè)計(jì) 面向?qū)ο蟮某绦蛟O(shè)計(jì)(object_oriented programming):面向?qū)ο蠓椒ǖ幕竟ぷ魇莿澐趾投x對象。 對對象的判斷和劃分與實(shí)際問題的領(lǐng)域有關(guān)。Alan Kay的OOP五大原則(1

2、) 所有東西都是對象。 (2) 程序是一大堆對象的組合;通過消息傳遞,各對象知道自己該做些什么。 (3) 每個(gè)對象都有自己的存儲(chǔ)空間,可容納其他對象。 (4) 每個(gè)對象都有一種類型。(5) 同一類所有對象都能接收相同的消息。封裝(訪問控制 ):隱藏的實(shí)現(xiàn)不妨把程序設(shè)計(jì)過程分成class creators 和client programmers兩個(gè)部門. class creators的目的就是制造類,只把必須的部分向client programmer公開,而把其他部分隱藏起來。有兩個(gè)理由要控制類中成員的存取權(quán)限. 不讓client programmer隨心所欲地直接使用應(yīng)該隱藏的部分來改變對象的

3、行為 讓class creator能隨心所欲地改變隱藏的部分,只要這種改變不會(huì)影響公開的部分 繼承:重用實(shí)現(xiàn) 最簡單的重用一個(gè)類的方法是直接使用這個(gè)類的一個(gè)對象來構(gòu)筑新的對象或程序組織composition:用現(xiàn)有對象構(gòu)筑一個(gè)新的對象 在一個(gè)對象內(nèi)部的對象通常是私有的 繼承: 重用接口 使用繼承時(shí),相當(dāng)于創(chuàng)建了一個(gè)新類。這個(gè)新類不僅包含現(xiàn)有類型的所有成員,但更重要的是,它復(fù)制了基礎(chǔ)類的接口。 可以向基礎(chǔ)類的對象發(fā)送的所有消息可以同樣地發(fā)給衍生類的對象: 即新的衍生類具有與基礎(chǔ)類相同的類型 衍生類與基礎(chǔ)類有兩種關(guān)系: 盡管具有相同的接口,但是通常具有不同的行為 - IS-A 或者在基礎(chǔ)類的界面的

4、基礎(chǔ)上增加新的接口(extend) - IS-LIKE-A 多態(tài)性 對于右邊這個(gè)類族關(guān)系,我們要進(jìn)行的一項(xiàng)重要工作是將衍生類的對象當(dāng)作基礎(chǔ)類的對象對待。它意味著我們只須編寫單一的代碼,令其忽略類型的特定細(xì)節(jié),只與基礎(chǔ)類的對象打交道。多態(tài)性(續(xù))Upcasting - 把衍生類的對象當(dāng)作其基礎(chǔ)類的對象對待void doStuff(Shape s) s.erase(); / . s.draw();Circle c = new Circle();Triangle t = new Triangle();Line l = new Line();doStuff(c);doStuff(t);doStuff(

5、l);你是一種Shape,我知道你能將自己刪掉,即erase();請自己采取那個(gè)行動(dòng),并自己去控制所有的細(xì)節(jié)吧。 多態(tài)性(續(xù))動(dòng)態(tài)綁定為Cirle調(diào)用draw()時(shí)執(zhí)行的代碼與為一個(gè)Square或Line調(diào)用draw()時(shí)執(zhí)行的代碼是不同的。但在將draw()消息發(fā)給一個(gè)不知道確切類型的Shape對象時(shí),根據(jù)Shape引用當(dāng)時(shí)連接的實(shí)際類型,會(huì)采取相應(yīng)的正確的操作。 多態(tài)性:將一條消息發(fā)給對象時(shí),如果不知道對方的具體類型是什么,但采取的行動(dòng)同樣是正確的。 在Java中,所有的函數(shù)調(diào)用都是動(dòng)態(tài)綁定的。 類(Class)類是具有共同屬性和行為的對象的抽象。類可以定義為數(shù)據(jù)和方法的集合。類也稱為模板

6、,因?yàn)樗鼈兲峁┝藢ο蟮幕究蚣?。屬?1方法 1屬性 2方法 2Class對象類的實(shí)例:每個(gè)實(shí)例有自己的存儲(chǔ)空間(數(shù)據(jù)類型和變量的關(guān)系)動(dòng)態(tài)性,每個(gè)對象有自己的生存周期,會(huì)經(jīng)歷創(chuàng)建、運(yùn)行到消亡的變化過程類和對象的關(guān)系類對象抽象實(shí)例化屬性或狀態(tài)操作或行為數(shù)據(jù)或變量方法封裝的實(shí)體=數(shù)據(jù)+方法建筑圖紙樓房1樓房2樓房3抽象具體實(shí)例化一個(gè)實(shí)物模具類的封裝性、繼承性和多態(tài)性封裝性為類中的成員變量和成員方法提供多級訪問權(quán)限繼承性從已存在的類創(chuàng)建新類,使得新類自動(dòng)擁有被繼承類的全部成員多態(tài)性提供類中方法執(zhí)行的多樣性,重載(overload)和覆蓋(overwrite)類的定義聲明類類聲明 成員變量的聲明;

7、成員方法的聲明及實(shí)現(xiàn);類聲明的格式修飾符 class 類 extends 父類 implements 接口列表public class Date1/類聲明 int year, month, day;/聲明成員變量類的定義(續(xù))聲明成員變量成員變量聲明語法修飾符 staticfinaltransient 數(shù)據(jù)類型 變量;public class Date1/類聲明 public int year, month, day;/聲明成員變量類的定義(續(xù))聲明成員方法方法聲明語法修飾符 返回值類型 方法(參數(shù)列表) throws 異常類 語句序列; return 返回值;方法體中的局部變量方法體中用re

8、turn語句返回值聲明main方法 public static void main(String args)case:Date1.java使用對象聲明對象對象實(shí)例化引用對象的成員變量和調(diào)用對象方法對象的引用模型方法調(diào)用的參數(shù)傳遞原則釋放對象聲明對象聲明對象的語法格式類 對象句柄;Date1 aday;/聲明aday是Date1類的一個(gè)對象句柄聲明對象僅僅說明了對象所屬的類,對象并沒有獲得值。對象的創(chuàng)建( 實(shí)例化)對象的創(chuàng)建new關(guān)鍵字用于創(chuàng)建對象,對象句柄 = new 類的構(gòu)造方法(參數(shù)列表) Person p1=new Person();同類多個(gè)對象的內(nèi)存分配成員變量:各對象獨(dú)有成員方法:各

9、對象共享?xiàng)?nèi)存.p1p2堆內(nèi)存P1的成員變量P2的成員變量Shout()方法0 x3000 x30230 age 0 age 對象的使用對象中成員變量和成員方法的使用:對象句柄.成員變量對象句柄.成員方法(參數(shù)列表)aday.year = 2006; /引用對象的成員變量aday.setDate(2006,1,28) /引用對象的成員方法對象的引用模型類的封裝性構(gòu)造方法與析構(gòu)方法方法的重載this引用和instanceof對象運(yùn)算符類及其成員的訪問權(quán)限實(shí)例成員與類成員初始化和清除 As the computer revolution progresses, unsafe programming

10、 has become one of the major culprits that makes programming expensive. 初始化和清除是程序設(shè)計(jì)安全性的兩個(gè)最重要的問題。 C+為我們引入了構(gòu)造函數(shù)和析構(gòu)函數(shù)的概念,Java也沿用構(gòu)造函數(shù)這個(gè)概念,但新增了自己的垃圾收集器。 構(gòu)造方法(構(gòu)造函數(shù))構(gòu)造方法:是一個(gè)在創(chuàng)建對象時(shí)被自動(dòng)調(diào)用的特殊函數(shù)。構(gòu)造方法的特征方法名與類名相同;不含返回類型;不能在方法中用return語句返回一個(gè)值;在類實(shí)例化時(shí),它會(huì)由系統(tǒng)自動(dòng)調(diào)用; 用構(gòu)造函數(shù)自動(dòng)初始化 如果某個(gè)類有一個(gè)構(gòu)造函數(shù),那么在創(chuàng)建對象的時(shí)候,Java會(huì)自動(dòng)調(diào)用那個(gè)構(gòu)造函數(shù)。Case

11、: SimpleConstructor.java 缺省構(gòu)造函數(shù)如果一個(gè)類沒有定義構(gòu)造函數(shù),則編譯程序會(huì)幫我們自動(dòng)創(chuàng)建一個(gè)缺省構(gòu)造函數(shù)。然而一旦定義了一個(gè)構(gòu)造函數(shù),就不會(huì)幫我們自動(dòng)生成一個(gè)。Case:DefaultCons.java 清除:收尾和垃圾收集垃圾收集機(jī)制只知道怎樣釋放由new分配的內(nèi)存,所以它不知道如何釋放對象的 “特殊”內(nèi)存。析構(gòu)方法 public void finalize()語句序列;一旦垃圾收集機(jī)制準(zhǔn)備好釋放對象占用的存儲(chǔ)空間,它首先調(diào)用finalize()。所以使用 finalize(),就可以在垃圾收集期間進(jìn)行一些重要的清除工作。 但是finalize()和C+的析構(gòu)函數(shù)

12、截然不同。 1、垃圾收集不等于析構(gòu)函數(shù),在我們不再需要一個(gè)對象之前,有些行動(dòng)是必須采取的,那么這些行動(dòng)必須由程序員自己來采取。 2、對象可能不會(huì)被當(dāng)作垃圾被收集掉。 3、垃圾收集只跟內(nèi)存有關(guān)。 方法重載(Methods overloading) 重載的含義:One of the important features in any programming language is the use of names. 我們用名字引用或描述所有對象與方法。 在日常生活中,我們用相同的詞表達(dá)多種不同的含義,即詞的“重載”。 大多數(shù)程序設(shè)計(jì)語言要求我們?yōu)槊總€(gè)函數(shù)都設(shè)定一個(gè)獨(dú)一無二的標(biāo)識符。 但是構(gòu)造函數(shù)的

13、出現(xiàn)要求函數(shù)名也能夠“重載”。 Often, the same word expresses a number of different meanings - its overloaded. Case: Overloading.java 函數(shù)重載(續(xù))成員方法重載參數(shù)列表必須不同,即以不同的參數(shù)個(gè)數(shù)、參數(shù)類型、參數(shù)的次序來區(qū)別重載方法返回值可以相同也可以不同,不能通過返回類型的不同來區(qū)分重載函數(shù)。 public setDate(int y ,int m , int d)public setDate(int m, int d)public setDate(int d)public setDate

14、(Date1 aday) 構(gòu)造方法重載Date2 aday1 = new Date2();Date2 aday2 = new Date2(2006,2,28);關(guān)鍵字thisthis引用:this1.java指代對象本身thisCase: Leaf.java訪問本類的成員變量和成員方法this.成員變量this.成員方法(參數(shù)列表)調(diào)用本類重載的構(gòu)造方法this(參數(shù)列表)Case:Flower.java 構(gòu)造函數(shù)調(diào)用必須是構(gòu)造函數(shù)中的第一條語句,并且不能在一個(gè)構(gòu)造函數(shù)調(diào)用兩個(gè)以上的構(gòu)造函數(shù)。instanceof對象運(yùn)算符aday instanceof Date2類及其成員的訪問權(quán)限 A pr

15、imary consideration in object-oriented design is separating the things that change from the things that stay the same. 每個(gè)庫的用戶(client programmer)必須能依賴自己使用的庫,并知道一旦新版本的庫推出,自己不需要改寫代碼。 為解決這個(gè)問題,Java推出了“訪問權(quán)限”的概念,允許庫創(chuàng)建者聲明哪些是客戶程序員可以是使用的,哪些是不可以使用的。Java中為類中成員設(shè)置了4種訪問權(quán)限,為類設(shè)置了2種訪問權(quán)限 類中成員的訪問權(quán)限 (續(xù))針對類內(nèi)的每個(gè)成員的每個(gè)定義,Ja

16、va訪問權(quán)限friendly,public, protected和private都放在它們的前面無論是數(shù)據(jù)成員還是方法。 權(quán)限修飾符同一類同一包不同包的子類所有類public(公有)protected(保護(hù))缺省private(私有)類中成員的訪問屬性(續(xù))public:接口訪問使用public關(guān)鍵字時(shí),它意味著緊隨在public后面的成員聲明適用于所有人,特別是適用于使用庫的客戶程序員。Dinner.javaFriendly默認(rèn)包:位于相同的目錄中,而且沒有明確的包名的類也是被認(rèn)為是默認(rèn)友好的 Cake.javaprivate:不能接觸!private關(guān)鍵字意味著除非那個(gè)特定的類,而且從那個(gè)

17、類的方法里,否則沒有人能訪問那個(gè)成員. IceCream.javaprotected:“友好的一種”. ChocolateChip.java 類的訪問權(quán)限在Java中,也可用訪問權(quán)限控制著客戶程序員是否能夠創(chuàng)建屬于這個(gè)類的一個(gè)對象。聲明一個(gè)類可使用的權(quán)限修飾符只有public和缺?。╢riendly)兩種,不能使用protected和private。public class Date1 /公有的類class Date1_ex /默認(rèn)的類類的訪問權(quán)限(續(xù))然而,我們同時(shí)還要注意到一些額外的限制:(1) 每個(gè)編譯單元(文件)都只能有一個(gè)public類。每個(gè)編譯單元有一個(gè)公共接口的概念是由那個(gè)公共類

18、表達(dá)出來的。根據(jù)自己的需要,它可擁有任意多個(gè)提供支撐的“友好”類。但若在一個(gè)編譯單元里使用了多個(gè)public類,編譯器就會(huì)向我們提示一條出錯(cuò)消息。(2) public類的名字必須與包含了編譯單元的那個(gè)文件的名字完全相符,甚至包括它的大小寫形式。如果出現(xiàn)不符,就會(huì)報(bào)告一個(gè)編譯期錯(cuò)誤(3) 可能(但并常見)有一個(gè)編譯單元根本沒有任何公共類。此時(shí),可按自己的意愿任意指定文件名。CASE: Lunch.java.實(shí)例成員與類成員(靜態(tài)成員static)兩者區(qū)別:實(shí)例成員(包括成員變量和成員方法)屬于對象,只有創(chuàng)建了對象才能通過對象訪問實(shí)例成員靜態(tài)成員(包括靜態(tài)成員變量和成員方法,前面有關(guān)鍵字stati

19、c)屬于類,通過類名就可以直接訪問類成員變量和調(diào)用類成員方法,即使沒有創(chuàng)建對象,也可以通過對象引用。實(shí)例成員變量與靜態(tài)成員變量兩者聲明時(shí)的差別public class Person1 String name; /姓名,實(shí)例成員變量 int age; /年齡 static int count; /人數(shù),類成員變量Math類中:Public satic final double PI;實(shí)例成員變量與靜態(tài)成員變量(續(xù))兩者存儲(chǔ)結(jié)構(gòu)的差別Person p1 = new Person1(“李小明”,21);Person p2 = new Person1(“王大偉”,19);實(shí)例成員變量與靜態(tài)成員變量(續(xù)

20、)兩者引用方式的差別實(shí)例成員變量屬于對象,要通過對象引用,類成員屬于類,既可以通過對象,也可以通過類訪問 / 通過對象訪問實(shí)例成員變量p1.count /通過對象訪問靜態(tài)成員變量Person1.count / 通過類訪問靜態(tài)成員變量實(shí)例成員方法與靜態(tài)成員方法兩者聲明時(shí)的差別public static int howMany()/靜態(tài)成員方法 return count; /靜態(tài)成員方法只能訪問類成員變量public static void main(String args)/main方法也是類成員方法兩者方法體中語句的差別在類成員方法體中,不能使用this引用。 兩者調(diào)用方式的差別

21、Person1.howMany(); /通過類名調(diào)用類成員方法p1.howMany(); /通過對象調(diào)用Static 靜態(tài)成員方法的幾點(diǎn)說明在靜態(tài)方法里只能直接調(diào)用同類中其他的靜態(tài)成員(包括變量和方法),而不能直接訪問類中的非靜態(tài)成員。(為什么?)靜態(tài)方法不能以任何方式引用this和super關(guān)鍵字Main()方法是靜態(tài)的,所以jvm在執(zhí)行main方法時(shí)不創(chuàng)建main方法所在類的實(shí)例對象,所以,我們 不能在main方法中使用該類的成員變量和成員函數(shù),只有實(shí)例化后才能使用。成員初始化 Java goes out of its way to guarantee that any variable

22、is properly initialized before it is used. 由于任何方法都可以初始化或使用那個(gè)數(shù)據(jù),所以在正式使用數(shù)據(jù)前,若還是強(qiáng)迫程序員將其一一初始化成一個(gè)適當(dāng)?shù)闹?,就可能不夠?qū)嶋H。因此,一個(gè)類的所有primitive數(shù)據(jù)成員都會(huì)保證獲得一個(gè)缺省值。當(dāng)然,句柄會(huì)獲得null值。InitValues.java 成員初始化對象的成員變量在創(chuàng)建時(shí)自動(dòng)進(jìn)行初始化基本類型默認(rèn)值booleanFlasecharu0000(null)byte(byte)0short(short)0int0long0L float0.0fdouble0.0d定義初始化和構(gòu)造初始化 定義初始化一個(gè)直

23、接的做法是在定義數(shù)據(jù)成員的同時(shí)也為其賦值。 class Measurement boolean b=true;char c=x;int i=47; ;也可以用相同的方法初始化對象。 class Measurement Depth o = new Depth(); ; 定義初始化和構(gòu)造初始化(續(xù))當(dāng)然這個(gè)方法也可以使用參數(shù),但是那些參數(shù)不能是尚未初始化的其它數(shù)據(jù)成員。 class CInit int i = f(); int k = g(i); / . ; class CInitWrong int j = g(i); int i = f(); / . ; 構(gòu)造函數(shù)初始化可以在構(gòu)造函數(shù)中對數(shù)據(jù)成員

24、初始化。 定義初始化順序 在一個(gè)類里,定義初始化的順序是由變量在類內(nèi)的定義順序決定的。即使變量定義大量遍布于方法定義的中間,那些變量仍然會(huì)在調(diào)用任何方法之前得到初始化當(dāng)然在構(gòu)造函數(shù)之前。 Case: OrderOfInitialization.java 靜態(tài)數(shù)據(jù)初始化 靜態(tài)數(shù)據(jù)成員只在這個(gè)類的第一個(gè)對象要?jiǎng)?chuàng)建的時(shí)候初始化。 Case: StaticInitialization.java 初始化順序我們總結(jié)一下對象的創(chuàng)建過程。考慮一個(gè)叫做Dog的類: 1、類型為Dog的一個(gè)對象首次創(chuàng)建時(shí),或者Dog類的靜態(tài)方法/數(shù)據(jù)首次訪問時(shí),Java解釋器必須找到Dog.class。 2、找到Dog.clas

25、s后,它的所有的靜態(tài)初始化模塊都會(huì)運(yùn)行。因此,靜態(tài)初始化僅發(fā)生一次。 3、創(chuàng)建一個(gè)new Dog( )時(shí),new語句首先會(huì)在堆里分配一個(gè)足夠的空間。 4、這個(gè)空間將會(huì)被清除為零,因此Dog中所有的數(shù)據(jù)成員都得到了缺省值。 5、執(zhí)行定義初始化。 6、執(zhí)行構(gòu)造函數(shù)。 類的重用One of the most compelling features about Java is code reuse. But to be revolutionary, you ve got to be able to do a lot more than copy code and change it. 兩種方法合成:在

26、新類里簡單地創(chuàng)建原有類的對象繼承:創(chuàng)建一個(gè)新類,這個(gè)新類基于一個(gè)存在的基礎(chǔ)類而定義出來。類的繼承性繼承的概念由一個(gè)已有的類定義一個(gè)新類,稱為新類繼承已有的類。 繼承的作用繼承原則子類繼承父類的成員變量,包括實(shí)例成員變量和類成員變量。子類繼承父類除構(gòu)造方法以外的成員方法,包括實(shí)例成員方法和類成員方法。子類不能繼承父類的構(gòu)造方法。因?yàn)楦割悩?gòu)造方法創(chuàng)建的是父類對象,子類必須聲明自己的構(gòu)造方法,創(chuàng)建子類自己的對象。子類能夠繼承父類的析構(gòu)方法。子類不能刪除父類成員。子類可以增加自己的成員變量和成員方法。子類可以重定義父類成員。定義繼承的類繼承類的語法:關(guān)鍵字(extends)修飾符 class 類 ex

27、tends 父類 implements 接口列表public class Student1 extends Person1 String speciality; /專業(yè)Case:Persion1.java Student1.java定義繼承的類單根結(jié)構(gòu):Java中的類都是Object的子類public class Person1 extends Object類的賦值相容性子類對象即是父類對象。 子類對象對父類成員的訪問權(quán)限子類對父類的私有成員(private)沒有訪問權(quán)限;子類對父類的公有成員(public)和保護(hù)成員(protected)具有訪問權(quán)限。子類對父類中缺省權(quán)限成員的訪問分兩種情況

28、,對同一包中父類的缺省權(quán)限成員具有訪問權(quán)限,而對不同包中父類的缺省權(quán)限成員則沒有訪問權(quán)限。定義繼承的類子類重定義從父類繼承來的成員子類隱藏父類成員變量Case: TestAB.java子類覆蓋父類成員方法子類繼承并重載父類成員方法Case : Detergent.javaSuper引用:調(diào)用父類的構(gòu)造方法super(參數(shù)列表)引用父類同名成員子類隱藏父類成員變量super.成員變量子類覆蓋父類成員方法super.成員方法(參數(shù)列表)Case:Student1.java初始化和參數(shù)傳遞構(gòu)造一個(gè)子類時(shí),父類的構(gòu)造方法在子類的構(gòu)造方法之前被調(diào)用。在子類的構(gòu)造方法中可用super(參數(shù)列表)調(diào)用父類的構(gòu)造方法。如果子類的構(gòu)造方法中沒有顯示的調(diào)用父類構(gòu)造方法,也沒有使用this關(guān)鍵字調(diào)用自己的其他構(gòu)造方法,那么在產(chǎn)生子類實(shí)例對象時(shí)JVM自動(dòng)調(diào)用父類無參數(shù)的構(gòu)造方法。Chess.java類的多態(tài)性什么是多態(tài)一個(gè)方法可以有多種實(shí)現(xiàn)版本,即“一種定義,多種實(shí)現(xiàn)”,類的多態(tài)性表現(xiàn)為方法的多態(tài)性:方法的重載和方法的覆蓋(重寫)方法的重載重載(overload)是指同一個(gè)類中的多個(gè)方法可以同名但參數(shù)列表必須不同。方法的覆蓋覆蓋(override)是指子類聲明并實(shí)現(xiàn)父類中的同名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論