Java程序設(shè)計任務(wù)驅(qū)動式教程任務(wù)八保護(hù)你的隱私封裝的使用.ppt_第1頁
Java程序設(shè)計任務(wù)驅(qū)動式教程任務(wù)八保護(hù)你的隱私封裝的使用.ppt_第2頁
Java程序設(shè)計任務(wù)驅(qū)動式教程任務(wù)八保護(hù)你的隱私封裝的使用.ppt_第3頁
Java程序設(shè)計任務(wù)驅(qū)動式教程任務(wù)八保護(hù)你的隱私封裝的使用.ppt_第4頁
Java程序設(shè)計任務(wù)驅(qū)動式教程任務(wù)八保護(hù)你的隱私封裝的使用.ppt_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

,Java程序設(shè)計任務(wù)驅(qū)動式教程,主編:孫修東、王永紅 高職高專規(guī)劃示范教材,北京航空航天大學(xué)出版社,230,目 錄,任務(wù)一 搭建環(huán)境(構(gòu)建Java集成開發(fā)環(huán)境),任務(wù)二 Java歡迎你(開發(fā)簡單Java應(yīng)用程序,任務(wù)三 小試牛刀(學(xué)習(xí)Java語言基礎(chǔ)),任務(wù)四 挑戰(zhàn)選擇(使用分支控制流程),任務(wù)五 游戲人生(使用循環(huán)控制流程),任務(wù)六 回歸自然(創(chuàng)建、使用類和對象),任務(wù)七 3G時代的消息傳遞(定義和使用類方法),任務(wù)八 保護(hù)你的隱私(封裝的使用),任務(wù)九 子承父業(yè)(繼承和多態(tài)的使用),任務(wù)十 上帝萬能之手(接口的使用),330,任務(wù)十一 用數(shù)組存儲信息(使用數(shù)組),任務(wù)十二 使用字符串進(jìn)行交流(使用字符串),任務(wù)十三 防患于未然(捕獲并處理異常),任務(wù)十四 主動出擊(拋出異常),任務(wù)十五 認(rèn)識Java Applet(Applet入門),任務(wù)十六 豐富多彩的Applet(在Applet中播放聲音和顯示圖像),任務(wù)十七 進(jìn)入Windows世界(設(shè)計圖形用戶界面),任務(wù)十八 布局規(guī)劃(使用布局管理器),任務(wù)十九 事件委托處理(如何處理事件),任務(wù)二十 選擇之道(使用選擇控件和選擇事件),目 錄,430,任務(wù)二十一 簡明清晰的菜單(使用菜單和其他常用事件),任務(wù)二十二 訪問數(shù)據(jù)(使用JDBC連接數(shù)據(jù)庫),任務(wù)二十三 訪問數(shù)據(jù)升級(數(shù)據(jù)庫編程),任務(wù)二十四 文件管理(目錄與文件管理),任務(wù)二十五 順序進(jìn)出之道(文件的順序訪問),任務(wù)二十六 隨機進(jìn)出之道(文件的隨機訪問),任務(wù)二十七 JAVA的分身術(shù)(創(chuàng)建和啟動線程),任務(wù)二十八 線程的生命周期與優(yōu)先級(線程的狀態(tài)與調(diào)度),任務(wù)二十九 基于連接的通信(Java中的套接字Socket),任務(wù)三十 基于無連接的通信(Java中的數(shù)據(jù)報編程),目 錄,530,任務(wù)八 保護(hù)你的隱私(封裝的使用),2,1,知識目標(biāo),能力目標(biāo),為什么需要封裝;對屬性封裝;用構(gòu)造方法實現(xiàn)對象成員的初始化。方法重載;Java中的構(gòu)造方法與實例方法區(qū)別;對構(gòu)造方法進(jìn)行重載。,理解封裝的概念;掌握private關(guān)鍵字;掌握構(gòu)造方法;掌握方法重載。,630,內(nèi)容提要,4,跟我做:銀行卡類的封裝,1,2,3,5,實現(xiàn)方案,代碼分析,必備知識,動手做一做,730,8.1 跟我做:銀行卡類的封裝,任務(wù)情景 銀行卡類采用封裝技術(shù)升級。每張銀行卡信息包含年利率;賬號、持卡人姓名、身份證號碼、地址;交易金額、交易日期、余額。 銀行類能夠存款、取款、查詢、購物支付、禁止透支。 根據(jù)持卡人不同操作,顯示不同信息。當(dāng)存款操作后,顯示原有余額、本次存款數(shù)額及最終存款余額;當(dāng)取款操作時,顯示原有余額、今日取款數(shù)額及最終存款余額。 運行結(jié)果,第1章目錄,830,問題分析 在任務(wù)七中學(xué)習(xí)過包,本任務(wù)中要使用它來進(jìn)行Java程序中類的組織。把需要在一起工作的類放在同一包里,除了public 修飾的類能夠被所有包中的類訪問外,缺省修飾符的類只能被其所在包中的類訪問,不能在其包外訪問。包的這種組織方式,把對類的訪問封鎖在一定的范圍,體現(xiàn)了Java面向?qū)ο蟮姆庋b性。 在本任務(wù)中,將類放在包com.task08中。包定義如下: package com.task08; 在面向?qū)ο蟪绦蛟O(shè)計中,提出“強內(nèi)聚、弱耦合”編程思想,即一個類的內(nèi)部聯(lián)系緊密,類與其他類之間的聯(lián)系松散。在實現(xiàn)AccountCard銀行卡類時,盡可能把類的成員聲明為私有的private,只把一些少量的、必要的方法聲明為公共的public,提供給外部使用。 在AccountCard類中,屬性的修飾符為private,對屬性的訪問只局限于AccountCard類。需要在類外訪問的屬性有interest年利率、account賬號、name持卡人姓名、id身份證號碼、address地址,為此專門設(shè)置了相應(yīng)的setter()方法、getter()方法。 當(dāng)在AccountCardTest類中訪問這些屬性時,使用相應(yīng)的setter()方法和getter()方法。,第1章目錄,8.2 實現(xiàn)方案,930,解決步驟 1.打開Eclipse,在study項目中創(chuàng)建包com.task08,再確定類名AccountCard,得到類的框架。 2.然后,在public class AccountCard下面一行輸入類的屬性描述: private static double interest; /私有、靜態(tài) private String account; 3.接著,在AccountCard類中輸入private屬性的getter()和setter() 方法的定義: public static double getInterest() /靜態(tài) return interest; public static void setInterest(double interest) /靜態(tài) AccountCerest = interest; public void setAccount(String account) this.account = account; /this代表當(dāng)前類的實例 ,8.2 實現(xiàn)方案,1030,4.定義相應(yīng)的功能方法: public void deposit(double cash) System.out.println(“=存款=“); /詳細(xì)實現(xiàn)代碼參見8.3 public void withdraw(double cash) System.out.println(“=取款=“); /詳細(xì)實現(xiàn)代碼參見8.3 public void query() System.out.println(“=查詢=“); /詳細(xì)實現(xiàn)代碼參見8.3 public void purchase(double payment) System.out.println(“=購物=“); /詳細(xì)實現(xiàn)代碼參見8.3 5.定義AccountCardTest測試類,運行程序。對AccountCard類的private屬性的訪問只能通過相應(yīng)的getter()和setter()方法進(jìn)行。,8.2 實現(xiàn)方案,1130,程序代碼 package com.task08; import java.util.Date; /導(dǎo)入程序中用到的系統(tǒng)類 /* * AccountCard.java * 銀行卡的封裝 */ public class AccountCard /自定義AccountCard類 /*年利率;賬號、持卡人姓名、身份證號碼、地址;交易金額、交易日期、余額*/ private static double interest; /私有、靜態(tài) private String account; /私有 private String name; private String id; private String address; private double DWAmount; private Date DWDate; private double balance; /*getter( )、setter( )方法*/ public static double getInterest() /靜態(tài)getter( ) return interest; public static void setInterest(double interest) /靜態(tài)setter( ) AccountCerest = interest; public String getAccount() / getter( ) return account; public void setAccount(String account) / setter( ) this.account = account; /this代表當(dāng)前類的實例 public String getName() return name; public void setName(String name) = name; public String getId() return id; public void setId(String id) this.id = id; public String getAddress() return address; public void setAddress(String address) this.address = address; /*存款、取款、查詢;購物支付、禁止透支*/ public void deposit(double cash) /類的存款行為(方法),第1章目錄,8.3 代碼分析,1230,8.3 代碼分析,System.out.println(“=存款=“); System.out.println(“您的卡號:“+this.account); /this代表當(dāng)前類的實例 System.out.println(“您的姓名:“+); System.out.println(“原有余額:“+this.balance); System.out.println(“現(xiàn)存入: “+cash); this.DWAmount=cash; balance=this.balance+cash; /余額自動計算 System.out.println(“最終余額:“+this.balance); this.DWDate=new Date(); /記錄當(dāng)天的日期 System.out.println(“ 存款日期:“+this.DWDate); public void withdraw(double cash) /類的取款行為(方法) System.out.println(“=取款=“); System.out.println(“您的卡號:“+this.account); System.out.println(“您的姓名:“+); System.out.println(“原有余額:“+this.balance); System.out.println(“現(xiàn)取出: “+cash); this.DWAmount=cash; if (this.balance-cash)0) /禁止透支 this.balance=this.balance-cash; /余額自動計算 System.out.println(“最終余額:“+this.balance); else System.out.println(“取出數(shù)額太大!請重新輸入?!?; this.DWDate=new Date(); /記錄當(dāng)天的日期 System.out.println(“ 取款日期:“+this.DWDate); public void query() /類的查詢行為(方法) System.out.println(“=查詢=“); System.out.println(“您的卡號:“+this.account); System.out.println(“您的姓名:“+); System.out.println(“最終余額是:“+this.balance); this.DWDate=new Date(); /記錄當(dāng)天的日期 System.out.println(“ 查詢?nèi)掌?“+this.DWDate); public void purchase(double payment) /類的付款行為(方法) System.out.println(“=購物=“); System.out.println(“您的卡號:“+this.account); System.out.println(“您的姓名:“+); System.out.println(“原有余額:“+this.balance); System.out.println(“現(xiàn)付出: “+payment); this.DWAmount=payment; if (this.balance-payment)0) /禁止透支 this.balance=this.balance-payment; /自動計算余額 System.out.println(“最終余額:“+this.balance); else System.out.println(“沒有足夠的余額!“); this.DWDate=new Date(); /記錄當(dāng)天的日期 System.out.println(“ 付款日期:“+this.DWDate); package com.task08; import java.util.Date; public class AccountCardTest /定義測試類 /* * param args */ public static void main(String args) AccountCard.setInterest(0.03); /年利率 System.out.println(“年利率: “+AccountCard.getInterest(); /設(shè)置持卡人信息 AccountCard wang=new AccountCard(); wang.setAccount(“1111111111“); wang.setName(“王朝“); wang.setId(); wang.setAddress(“持卡人地址“); wang.deposit(1000.5); /存款 wang.query(); /查詢 wang.withdraw(500); /取款 wang.query(); wang.purchase(300); /購物 wang.query(); ,第1章目錄,1330,應(yīng)用擴展 本任務(wù)有兩個方面的應(yīng)用擴展,一個是在AccountCard類中增加構(gòu)造方法,升級后的類名改為AccountCard2,另一個是新建AccountCard2Menu類,類中增加菜單功能。測試類相應(yīng)升級為AccountCard2Test。 在AccountCard2類中增加代碼如下: /*無參構(gòu)造方法*/ public AccountCard2() /初始化持卡人信息 super(); this.account = “1111111110“; = “王朝“; this.id = ; this.address = “持卡人地址“; this.balance = 0; /*帶參構(gòu)造方法*/ public AccountCard2(String account, String name, String id, String address, double balance) /初始化持卡人信息 super(); this.account = account; = name; this.id = id; this.address = address; this.balance = balance; 新建AccountCard2Menu類代碼如下: package com.task08; public class AccountCard2Menu /菜單類 /*菜單*/ public void menu() /菜單方法 System.out.println(“n歡迎使用銀行ATM系統(tǒng)2.0版“); System.out.println(“t 1. 存 款“); System.out.println(“t 2. 取 款“); System.out.println(“t 3. 購物付款“); System.out.println(“t 4. 查 詢“); System.out.println(“t 5. 退 出“); System.out.print(“選擇請輸入數(shù)字1-5:“); 在AccountCard2Test測試類中的代碼修改如下: package com.task08; import java.util.Scanner; public class AccountCard2Test /測試類 /* * param args */ public static void main(String args) /程序入口方法 / AccountCard2.setInterest(0.03); /年利率 / System.out.println(“年利率: “+AccountCard2.getInterest(); /通過構(gòu)造方法初始化持卡人信息 AccountCard2 wang=new AccountCard2(); /創(chuàng)建類的對象 int choice; do wang.menu(); /* 輸入數(shù)字,選擇菜單 */ Scanner input = new Scanner(System.in); /從鍵盤輸入數(shù)據(jù) choice = input.nextInt(); switch (choice) case 1: wang.deposit(1000.5); /存款 break; case 2: wang.withdraw(500); /取款 break; case 3: wang.purchase(300); /購物 break; case 4: wang.query(); /查詢 break; case 5: System.out.println(“謝謝您的使用!“); System.exit(1); while(choice!=5); ,8.3 代碼分析,1430,8.4 必備知識,8.4.1 封裝的概念 1. 什么是封裝 在Java中通過private關(guān)鍵字限制對類的成員變量或成員方法的訪問,稱為封裝。封裝性是面向?qū)ο蟮幕A(chǔ),也是面向?qū)ο蟮暮诵奶卣髦弧n愂菙?shù)據(jù)及對數(shù)據(jù)操作的封裝體,類具有封裝性。通過封裝,將屬性私有化,再提供公有方法訪問私有屬性。 2. 為什么要封裝 封裝的目的是限制對類的成員的訪問,隱藏類的實現(xiàn)細(xì)節(jié)。類的設(shè)計者和使用者考慮的角度不同。設(shè)計者考慮如何定義類的屬性和方法,如何設(shè)置其訪問權(quán)限等,而類的使用者只需知道類有哪些功能,可以訪問哪些屬性和方法。只要使用者使用的界面不變,即使類的內(nèi)部實現(xiàn)細(xì)節(jié)發(fā)生變化,使用者的代碼就不需要改變,增強了程序的可維護(hù)性。 舉個生活中封裝的例子。張三是一名員工,即張三是員工類的實例。張三的隱私相當(dāng)于員工類的私有屬性,平時我們是無法直接獲得張三的隱私。但員工有一個能力就是說出隱私,相當(dāng)于員工類的公共方法,通過張三說出隱私這個公共方法,我們就可以得到張三的隱私。這就是生活中的封裝。,第1章目錄,1530,3. 封裝的實現(xiàn)步驟 要限制類的外部對類成員的訪問,可以使用訪問修飾符private修飾屬性,讓其他類只能通過公共方法訪問私有屬性。封裝的實現(xiàn)步驟如下: 修改屬性的訪問修飾符來限制對屬性的訪問。例如,AccountCard類中,屬性interest、account、name、id、address都設(shè)置為private。 private String account; /屬性account設(shè)為private private String name; /屬性name設(shè)為private 為每個私有屬性創(chuàng)建一對賦值方法setter()和取值方法getter(),用于對屬性的訪問。例如,AccountCard類對屬性account、name提供的公共setter()和getter()方法: public String getAccount() /屬性account的getter()方法 return account; public void setAccount(String account) /屬性account的setter ()方法 this.account = account; /this代表當(dāng)前類的實例 ,第1章目錄,8.4 必備知識,1630,public String getName() /屬性name的getter()方法 return name; public void setName(String name) /屬性name的setter ()方法 = name; 在setter()和getter()方法中,加入對屬性的存取限制。例如,對身份證號碼不加存取限制時的setter()方法: public void setId(String id) this.id = id; 現(xiàn)在要求加入對身份證號碼的長度限制,長度不為18位時在控制臺顯示出錯信息,則setter()方法改為: public void setId(String id) if (id.length()=18) this.id = id; else System.out.println(“身份證號碼不對!“); ,第1章目錄,8.4 必備知識,1730,4. 封裝之后的使用 在另一個類中要對AccountCard2類中的私有屬性account、name賦值,先得到AccountCard2類的實例accountCard2,再通過使用setter()方法進(jìn)行。 accountCard2.setAccount(“1111111111“); accountCard2.setName(“王朝“); 需要獲取私有屬性account、name的值,必須使用getter()方法。 String account=accountCard2.getAccount(); String name=accountCard2.getName(); 注意:不可以直接用如下方式訪問私有屬性account和name: accountCard2.account=“1111111111“; accountC=“王朝“; String account=accountCard2.account; String name=accountC;,8.4 必備知識,1830,8.4 必備知識,8.4.2 private關(guān)鍵字 對屬性四種訪問權(quán)限的比較參見表8-1。 訪問修飾符本類本類所在包其他包中的本類子類其他包中的非子類public能訪問能訪問能訪問能訪問protected能訪問能訪問能訪問不能private能訪問不能不能不能缺省能訪問能訪問不能不能注意:,1930,屬性的public修飾符應(yīng)少用,其他類訪問本類屬性應(yīng)該通過相應(yīng)的setter()或getter()方法進(jìn)行。如果沒有訪問修飾符(缺?。?,則屬性默認(rèn)只能被同一個包中的類訪問。 在設(shè)計屬性時,還有幾個修飾符: static定義的屬性,稱為靜態(tài)變量,也稱為類變量。類變量很特別,與實例變量不同,可以用類直接訪問,類的所對象共享該屬性。 final定義常量,在方法中不可改變它的值。例如public static final double PI = 3.14159265358979323846;語句中,PI是一個常量。參見任務(wù)十。 transient定義暫時性變量,用于對象存檔。 Volatile易失(共享)域變量,用于并發(fā)線程的共享。參見任務(wù)二十七和二十八,8.4 必備知識,2030,8.4.3 構(gòu)造方法 1. 構(gòu)造方法的概念 構(gòu)造方法是一種特殊的類的方法,方法名與類名相同,而且沒有返回類型,也不需要void。構(gòu)造方法的作用在于對象創(chuàng)建時初始化對象,給實例化對象的成員變量賦初值。 類中的其他方法就稱為實例方法。 2. 構(gòu)造方法的目的 我們觀察一下AccountCard類,它有多個私有屬性,為了遵循面向?qū)ο蠓庋b的思想,就有多個對應(yīng)的setter方法。在使用AccountCard類的時候,必須調(diào)用setter()方法對私有屬性初始化。當(dāng)開發(fā)一個項目時,類的私有屬性會很多,這是很繁瑣也很容易出錯的事情。通過構(gòu)造方法簡化了對象初始化的代碼。 3. 構(gòu)造方法格式 與一般的類的方法相似,也有不一樣之處。方法名與類名相同,無返回值,也不需要void。構(gòu)造方法格式如下: public (參數(shù)列表) 這也是構(gòu)造方法與實例方法的區(qū)別。,8.4 必備知識,2130,無參構(gòu)造方法 public class Book private String bookName; /*無參構(gòu)造方法,方法名Book與類名Book相同,無返回值,也不需要void */ public Book() this.bookName = “Java程序設(shè)計任務(wù)驅(qū)動式教程“; public String getBookName() return bookName; public void setBookName(String bookName) this.bookName = bookName; 在BookTest測試類中實例化Book類時,代碼如下: Book book = new Book(); 實現(xiàn)了book對象的bookName屬性的初始化。book.getBookName()的返回值為“Java程序設(shè)計任務(wù)驅(qū)動式教程“。,8.4 必備知識,2230,帶參構(gòu)造方法 public class Book private String bookName; /*帶參構(gòu)造方法,方法名Book與類名Book相同,無返回值,也不需要void */ public Book(String bookName) this.bookName = bookName; public String getBookName() return bookName; public void setBookName(String bookName) this.bookName = bookName; 在BookTest測試類中實例化Book類時,代碼如下: Book book = new Book(“Java程序設(shè)計任務(wù)驅(qū)動式教程“); /有實參 創(chuàng)建book對象的時候,顯式地為bookName實例變量賦初始值。book.getBookName()的返回值為“Java程序設(shè)計任務(wù)驅(qū)動式教程“。當(dāng)私有屬性很多時,帶參構(gòu)造方法的參數(shù)也多,省去了多行的賦值語句,靈活性更大些。,8.4 必備知識,2330,注意: 構(gòu)造方法不能像成員方法那樣被直接調(diào)用,只能通過new運算符實例化一個對象時,由系統(tǒng)自動調(diào)用,實現(xiàn)對成員變量初始化的作用。例如: Book book = new Book(); /調(diào)用構(gòu)造方法,實例化一個對象book Book()就是Book類的一個無參構(gòu)造方法。 在前面的任務(wù)中學(xué)習(xí)時,有的類沒有定義構(gòu)造方法,怎么能生成一個類的對象呢?在Java中,系統(tǒng)會為這樣的類自動生成一個無參的默認(rèn)構(gòu)造方法,然后,使用默認(rèn)值初始化對象的成員變量。 數(shù)值型變量的默認(rèn)值為0,布爾型為false,字符型為“0”,字符串為null。 所以,當(dāng)Book類沒有定義構(gòu)造方法時,我們在代碼中仍然可以用new Book()實例化一個對象。,8.4 必備知識,2430,改錯: 下面Constructor類中關(guān)于構(gòu)造方法有哪些錯誤? public class Constructor private int x; public Constructor () x = 1; public Constructor (int i) x = i; public int Constructor (int i) x = i; return x+; private Constructor (int i, String s) public Constructor (String s,int i) private Constructe (int i) x=i+; private void Constructe (int i) x=i+; 提示:有1個錯誤。區(qū)分哪些是實例方法,哪些是構(gòu)造方法。,8.4 必備知識,2530,8.4.4 方法重載 1. 什么是方法重載 在同一個類中,多個方法具有相同的方法名,但卻具有不同的參數(shù)列表,方法之間的這種關(guān)系稱為方法重載。重載方法中的參數(shù)列表必須不同,也就是說,參數(shù)個數(shù)、參數(shù)類型或參數(shù)順序不同,至少三者中有一項不同。例如,任務(wù)中一直使用的java.io.PrintStream類的println()方法,能夠打印多種類型數(shù)據(jù),有多種實現(xiàn)方式: public void println(float x); public void println(String y); 根據(jù)方法重載的定義,這些同名的println()方法之間的關(guān)系就是方法重載。 方法重載并不由方法的返回類型決定。例如,以下同名的circle ()方法之間的關(guān)系就不是方法重載。 public float circle(float x); public int circle (float x); 2. 為什么需要方法重載 因為在完成同一功能時,可能遇到不同的具體情況,比如在控制臺輸出信息,可能有實數(shù)輸出、整數(shù)輸出、字符輸出、字符串輸出等,定義多個不同方法名的方法,無論在設(shè)計還是在調(diào)用時,都是很麻煩的事。采用方法重載,用相同的方法名,不同的參數(shù)列表,就解決了這些問題。,8.4 必備知識,2630,3. 方法重載舉例 加法器類代碼如下: package com.task08; /* * Calculate.java * 用加法器解釋方法重載 */ public class Calculate /*add()方法之間關(guān)系為方法重載*/ public int add(int a,int b) /方法一:參數(shù)類型為int return a+b; public double add(double a,double b) /方法二:參數(shù)類型為double return a+b; public float add(float a,float b) /方法三:參數(shù)類型為float return a+b; ,8.4 必備知識,2730,測試類代碼: package com.task08; public class CalculateTest /* * param args */ public static void main(String arg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論