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

下載本文檔

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

文檔簡介

1、主編:孫修東、王永紅高職高專規(guī)劃示范教材 北京航空航天大學出版社目錄任務(wù)一 搭建環(huán)境(構(gòu)建Java集成開發(fā)環(huán)境)任務(wù)二 Java歡迎你(開發(fā)簡單Java應(yīng)用程序任務(wù)三 小試牛刀(學習Java語言基礎(chǔ))任務(wù)四 挑戰(zhàn)選擇(使用分支控制流程)任務(wù)五 游戲人生(使用循環(huán)控制流程)任務(wù)六 回歸自然(創(chuàng)建、使用類和對象)任務(wù)七 3G時代的消息傳遞(定義和使用類方法)任務(wù)八 保護你的隱私(封裝的使用)任務(wù)九 子承父業(yè)(繼承和多態(tài)的使用)任務(wù)十 上帝萬能之手(接口的使用)任務(wù)十一 用數(shù)組存儲信息(使用數(shù)組)任務(wù)十二 使用字符串進行交流(使用字符串)任務(wù)十三 防患于未然(捕獲并處理異常)任務(wù)十四 主動出擊(拋出

2、異常)任務(wù)十五 認識Java Applet(Applet入門)任務(wù)十六 豐富多彩的Applet(在Applet中播放聲音和顯示圖像)任務(wù)十七 進入Windows世界(設(shè)計圖形用戶界面)任務(wù)十八 布局規(guī)劃(使用布局管理器)任務(wù)十九 事件委托處理(如何處理事件)任務(wù)二十 選擇之道(使用選擇控件和選擇事件)目錄任務(wù)二十一 簡明清晰的菜單(使用菜單和其他常用事件)任務(wù)二十二 訪問數(shù)據(jù)(使用JDBC連接數(shù)據(jù)庫)任務(wù)二十三 訪問數(shù)據(jù)升級(數(shù)據(jù)庫編程)任務(wù)二十四 文件管理(目錄與文件管理)任務(wù)二十五 順序進出之道(文件的順序訪問)任務(wù)二十六 隨機進出之道(文件的隨機訪問)任務(wù)二十七 JAVA的分身術(shù)(創(chuàng)建和

3、啟動線程)任務(wù)二十八 線程的生命周期與優(yōu)先級(線程的狀態(tài)與調(diào)度)任務(wù)二十九 基于連接的通信(Java中的套接字Socket)任務(wù)三十 基于無連接的通信(Java中的數(shù)據(jù)報編程)目錄任務(wù)八 保護你的隱私(封裝的使用) 21知識目標知識目標能力目標能力目標為什么需要封裝;對屬性封裝;用構(gòu)造方法實現(xiàn)對象成員的初始化。方法重載;Java中的構(gòu)造方法與實例方法區(qū)別;對構(gòu)造方法進行重載。 理解封裝的概念;掌握private關(guān)鍵字;掌握構(gòu)造方法;掌握方法重載。 內(nèi)容提要內(nèi)容提要4跟我做:跟我做:銀行卡類的封裝銀行卡類的封裝 1235實現(xiàn)方案實現(xiàn)方案 代碼分析代碼分析 必備知識必備知識 動手做一做動手做一做

4、8.1 跟我做:銀行卡類的封裝 n任務(wù)情景任務(wù)情景銀行卡類采用封裝技術(shù)升級。每張銀行卡信息包含年利率;賬號、持卡人姓名、身份證號碼、地址;交易金額、交易日期、余額。銀行類能夠存款、取款、查詢、購物支付、禁止透支。根據(jù)持卡人不同操作,顯示不同信息。當存款操作后,顯示原有余額、本次存款數(shù)額及最終存款余額;當取款操作時,顯示原有余額、今日取款數(shù)額及最終存款余額。n運行結(jié)果運行結(jié)果第1章目錄n問題分析問題分析在任務(wù)七中學習過包,本任務(wù)中要使用它來進行Java程序中類的組織。把需要在一起工作的類放在同一包里,除了public 修飾的類能夠被所有包中的類訪問外,缺省修飾符的類只能被其所在包中的類訪問,不能

5、在其包外訪問。包的這種組織方式,把對類的訪問封鎖在一定的范圍,體現(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年利率、a

6、ccount賬號、name持卡人姓名、id身份證號碼、address地址,為此專門設(shè)置了相應(yīng)的setter()方法、getter()方法。當在AccountCardTest類中訪問這些屬性時,使用相應(yīng)的setter()方法和getter()方法。第1章目錄8.2 實現(xiàn)方案 n解決步驟解決步驟1.打開Eclipse,在study項目中創(chuàng)建包com.task08,再確定類名AccountCard,得到類的框架。2.然后,在public class AccountCard下面一行輸入類的屬性描述:private static double interest;/私有、靜態(tài)private String

7、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代表當前類的實例8.2 實現(xiàn)方案 4.定義相應(yīng)的功能方法:publ

8、ic void deposit(double cash)System.out.println(=存款=); /詳細實現(xiàn)代碼參見8.3public void withdraw(double cash)System.out.println(=取款=); /詳細實現(xiàn)代碼參見8.3public void query()System.out.println(=查詢=); /詳細實現(xiàn)代碼參見8.3public void purchase(double payment)System.out.println(=購物=); /詳細實現(xiàn)代碼參見8.35.定義AccountCardTest測試類,運行程序。對Acc

9、ountCard類的private屬性的訪問只能通過相應(yīng)的getter()和setter()方法進行。8.2 實現(xiàn)方案 n程序代碼程序代碼package com.task08;import java.util.Date;/導入程序中用到的系統(tǒng)類/* * AccountCard.java * 銀行卡的封裝 */public class AccountCard /自定義AccountCard類/*年利率;賬號、持卡人姓名、身份證號碼、地址;交易金額、交易日期、余額*/private static double interest;/私有、靜態(tài)private String account;/私有pri

10、vate 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 = in

11、terest;public String getAccount() / getter( )return account;public void setAccount(String account) / setter( )this.account = account; /this代表當前類的實例public String getName() return name;public void setName(String name) = name;public String getId() return id;public void setId(String id) this.i

12、d = id;public String getAddress() return address;public void setAddress(String address) this.address = address;/*存款、取款、查詢;購物支付、禁止透支*/public void deposit(double cash)/類的存款行為(方法)第1章目錄8.3 代碼分析 8.3 代碼分析 System.out.println(=存款=);System.out.println(您的卡號:+this.account);/this代表當前類的實例System.out.println(您的姓名:

13、+);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();/記錄當天的日期System.out.println(存款日期:+this.DWDate);public void withdraw(double cash)/類的取款行為(方法)System.out.pri

14、ntln(=取款=);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);elseSystem.out.prin

15、tln(取出數(shù)額太大!請重新輸入。);this.DWDate=new Date();/記錄當天的日期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();/記錄當天的日期System.out.

16、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)/禁止透

17、支this.balance=this.balance-payment;/自動計算余額System.out.println(最終余額:+this.balance);elseSystem.out.println(沒有足夠的余額!);this.DWDate=new Date();/記錄當天的日期System.out.println(付款日期:+this.DWDate);package com.task08;import java.util.Date;public class AccountCardTest /定義測試類/* * param args */public static void main

18、(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);

19、 /取款wang.query();wang.purchase(300);/購物wang.query();第1章目錄n應(yīng)用擴展應(yīng)用擴展本任務(wù)有兩個方面的應(yīng)用擴展,一個是在AccountCard類中增加構(gòu)造方法,升級后的類名改為AccountCard2,另一個是新建AccountCard2Menu類,類中增加菜單功能。測試類相應(yīng)升級為AccountCard2Test。在AccountCard2類中增加代碼如下:/*無參構(gòu)造方法*/public AccountCard2() /初始化持卡人信息super();this.account = 1111111110; = 王朝;this.

20、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類代碼

21、如下: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:);在A

22、ccountCard2Test測試類中的代碼修改如下: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 Account

23、Card2();/創(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.

24、println(謝謝您的使用!);System.exit(1);while(choice!=5);8.3 代碼分析 8.4 必備知識 8.4.1 封裝的概念封裝的概念1. 什么是封裝什么是封裝在Java中通過private關(guān)鍵字限制對類的成員變量或成員方法的訪問,稱為封裝。封裝性是面向?qū)ο蟮幕A(chǔ),也是面向?qū)ο蟮暮诵奶卣髦?。類是?shù)據(jù)及對數(shù)據(jù)操作的封裝體,類具有封裝性。通過封裝,將屬性私有化,再提供公有方法訪問私有屬性。2. 為什么要封裝為什么要封裝封裝的目的是限制對類的成員的訪問,隱藏類的實現(xiàn)細節(jié)。類的設(shè)計者和使用者考慮的角度不同。設(shè)計者考慮如何定義類的屬性和方法,如何設(shè)置其訪問權(quán)限等,而類的

25、使用者只需知道類有哪些功能,可以訪問哪些屬性和方法。只要使用者使用的界面不變,即使類的內(nèi)部實現(xiàn)細節(jié)發(fā)生變化,使用者的代碼就不需要改變,增強了程序的可維護性。舉個生活中封裝的例子。張三是一名員工,即張三是員工類的實例。張三的隱私相當于員工類的私有屬性,平時我們是無法直接獲得張三的隱私。但員工有一個能力就是說出隱私,相當于員工類的公共方法,通過張三說出隱私這個公共方法,我們就可以得到張三的隱私。這就是生活中的封裝。第1章目錄3. 封裝的實現(xiàn)步驟封裝的實現(xiàn)步驟要限制類的外部對類成員的訪問,可以使用訪問修飾符private修飾屬性,讓其他類只能通過公共方法訪問私有屬性。封裝的實現(xiàn)步驟如下:修改屬性的訪

26、問修飾符來限制對屬性的訪問。例如,AccountCard類中,屬性interest、account、name、id、address都設(shè)置為private。private String account;/屬性account設(shè)為privateprivate String name;/屬性name設(shè)為private為每個私有屬性創(chuàng)建一對賦值方法setter()和取值方法getter(),用于對屬性的訪問。例如,AccountCard類對屬性account、name提供的公共setter()和getter()方法:public String getAccount() /屬性account的getter

27、()方法return account;public void setAccount(String account) /屬性account的setter ()方法this.account = account; /this代表當前類的實例第1章目錄8.4 必備知識必備知識 public String getName() /屬性name的getter()方法return name;public void setName(String name) /屬性name的setter ()方法 = name;在setter()和getter()方法中,加入對屬性的存取限制。例如,對身份證號碼

28、不加存取限制時的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;elseSystem.out.println(身份證號碼不對!);第1章目錄8.4 必備知識必備知識 4. 封裝之后的使用封裝之后的使用在另一個類另一個類中要對AccountCard2類中的私有屬性account、name賦值,先得到AccountCar

29、d2類的實例accountCard2,再通過使用setter()方法進行。accountCard2.setAccount(1111111111);accountCard2.setName(王朝);需要獲取私有屬性account、name的值,必須使用getter()方法。String account=accountCard2.getAccount();String name=accountCard2.getName();注意:注意:不可以直接用如下方式訪問私有屬性account和name:accountCard2.account=1111111111;accountC=王朝;

30、String account=accountCard2.account;String name=accountC;8.4 必備知識必備知識 8.4 必備知識必備知識 8.4.2 private關(guān)鍵字對屬性四種訪問權(quán)限的比較參見表8-1。訪問修飾符本類本類所在包其他包中的本類子類其他包中的非子類public能訪問能訪問能訪問能訪問能訪問能訪問能訪問能訪問protected能訪問能訪問能訪問不能private能訪問能訪問不能不能不能缺省能訪問能訪問不能不能注意:訪問修飾符本類本類所在包其他包中的本類子類其他包中的非子類publicpublic能訪問能訪問能訪問能訪問能訪問能訪問能

31、訪問能訪問protected能訪問能訪問能訪問不能privateprivate能訪問能訪問不能不能不能缺省能訪問能訪問不能不能屬性的public修飾符應(yīng)少用,其他類訪問本類屬性應(yīng)該通過相應(yīng)的setter()或getter()方法進行。如果沒有訪問修飾符(缺?。?,則屬性默認只能被同一個包中的類訪問。在設(shè)計屬性時,還有幾個修飾符:static定義的屬性,稱為靜態(tài)變量靜態(tài)變量,也稱為類變量。類變量很特別,與實例變量實例變量不同,可以用類直接訪問,類的所對象共享該屬性。final定義常量,在方法中不可改變它的值。例如public static final double PI = 3.141592653

32、58979323846;語句中,PI是一個常量。參見任務(wù)十。transient定義暫時性變量,用于對象存檔。Volatile易失(共享)域變量,用于并發(fā)線程的共享。參見任務(wù)二十七和二十八8.4 必備知識必備知識 8.4.3 構(gòu)造方法1. 構(gòu)造方法的概念構(gòu)造方法的概念構(gòu)造方法是一種特殊的類的方法,方法名與類名相同,而且沒有返回類型,也不需要void。構(gòu)造方法的作用在于對象創(chuàng)建時初始化對象,給實例化對象的成員變量賦初值。類中的其他方法就稱為實例方法。2. 構(gòu)造方法的目的構(gòu)造方法的目的我們觀察一下AccountCard類,它有多個私有屬性,為了遵循面向?qū)ο蠓庋b的思想,就有多個對應(yīng)的setter方法。

33、在使用AccountCard類的時候,必須調(diào)用setter()方法對私有屬性初始化。當開發(fā)一個項目時,類的私有屬性會很多,這是很繁瑣也很容易出錯的事情。通過構(gòu)造方法簡化了對象初始化的代碼。3. 構(gòu)造方法格式構(gòu)造方法格式與一般的類的方法相似,也有不一樣之處。方法名與類名相同方法名與類名相同,無返回值,也不需要不需要void。構(gòu)造方法格式如下:public (參數(shù)列表)這也是構(gòu)造方法與實例方法的區(qū)別。8.4 必備知識必備知識 無參構(gòu)造方法public class Bookprivate String bookName;/*無參構(gòu)造方法,方法名Book與類名Book相同,無返回值,也不需要void

34、*/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 必備知識必備知識 帶參構(gòu)造方法public c

35、lass Bookprivate 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ū)動

36、式教程程序設(shè)計任務(wù)驅(qū)動式教程);/有實參有實參創(chuàng)建book對象的時候,顯式地為bookName實例變量賦初始值。book.getBookName()的返回值為Java程序設(shè)計任務(wù)驅(qū)動式教程。當私有屬性很多時,帶參構(gòu)造方法的參數(shù)也多,省去了多行的賦值語句,靈活性更大些。8.4 必備知識必備知識 注意:注意:構(gòu)造方法不能像成員方法那樣被直接調(diào)用,只能通過new運算符實例化一個對象時,由系統(tǒng)自動調(diào)用,實現(xiàn)對成員變量初始化的作用。例如:Book book = new Book();/調(diào)用構(gòu)造方法,實例化一個對象bookBook()就是Book類的一個無參構(gòu)造方法。在前面的任務(wù)中學習時,有的類沒有定義構(gòu)

37、造方法,怎么能生成一個類的對象呢?在Java中,系統(tǒng)會為這樣的類自動生成一個無參的默認構(gòu)造方法,然后,使用默認值初始化對象的成員變量。數(shù)值型變量的默認值為0,布爾型為false,字符型為“0”,字符串為null。所以,當Book類沒有定義構(gòu)造方法時,我們在代碼中仍然可以用new Book()實例化一個對象實例化一個對象。8.4 必備知識必備知識 改錯:改錯:下面Constructor類中關(guān)于構(gòu)造方法有哪些錯誤?public class Constructor private int x;public Constructor () x = 1;public Constructor (int i)

38、 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 必備知識必備知識 8.4.4 方法重載1. 什么是方法重載什么是方法重載在同一個類中,多個方法具有相同的方法名,但卻具有不同的參數(shù)列表,方法之間的這種

39、關(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);publi

40、c int circle (float x);2. 為什么需要方法重載為什么需要方法重載因為在完成同一功能時,可能遇到不同的具體情況,比如在控制臺輸出信息,可能有實數(shù)輸出、整數(shù)輸出、字符輸出、字符串輸出等,定義多個不同方法名的方法,無論在設(shè)計還是在調(diào)用時,都是很麻煩的事。采用方法重載,用相同的方法名,不同的參數(shù)列表,就解決了這些問題。8.4 必備知識必備知識 3. 方法重載舉例方法重載舉例加法器類代碼如下:package com.task08;/* * Calculate.java * 用加法器解釋方法重載*/public class Calculate /*add()方法之間關(guān)系為方法重載*/public int add(int a,int b)/方法一:參數(shù)類型為intreturn a+b;public double add(double a,double b)/方法二:參數(shù)類型為doublereturn a+b;public float add(float a,float b)/方法三:參數(shù)類型為floatreturn a+b;8.4 必備知識必備知識 測試類代碼:package com.task08;public class CalculateTest /* * param args */public static void main(String ar

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論