Java課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)_第1頁
Java課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)_第2頁
Java課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)_第3頁
Java課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)_第4頁
Java課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、項(xiàng)目3 面向?qū)ο缶幊袒A(chǔ)項(xiàng)目3 面向?qū)ο缶幊袒A(chǔ)主要內(nèi)容3.1 任務(wù)描述3.2 類和對(duì)象3.3 繼承和多態(tài)3.4 接口和包3.5 Java異常處理3.6 任務(wù)實(shí)施主要內(nèi)容3.1 任務(wù)描述能力要求理解面向?qū)ο缶幊痰幕舅枷胝莆疹悺?duì)象的基本概念,類與對(duì)象之間的關(guān)系能用Java語言編寫一個(gè)類能實(shí)現(xiàn)對(duì)象的生成及對(duì)對(duì)象的成員方法和成員變量的調(diào)用能力要求理解面向?qū)ο缶幊痰幕舅枷隞ava課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)Java課件-項(xiàng)目3-面向?qū)ο缶幊袒A(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)概述對(duì)象對(duì)象的行為(behavior)可以對(duì)對(duì)象實(shí)施的操作,或?qū)ο笏哂械墓δ?。?duì)象的屬性(attribute)對(duì)象的外觀、性質(zhì)、屬性等

2、。類封裝性繼承性多態(tài)性面向?qū)ο蟪绦蛟O(shè)計(jì)概述對(duì)象面向?qū)ο蠹夹g(shù)的基本概念和特征對(duì)象、類和實(shí)體對(duì)象類實(shí)例化抽象計(jì)算機(jī)世界實(shí)體抽象數(shù)據(jù)類型現(xiàn)實(shí)世界抽象映射計(jì)算機(jī)邏輯的實(shí)現(xiàn)面向?qū)ο蠹夹g(shù)的基本概念和特征對(duì)象、類和實(shí)體對(duì)象類實(shí)例化抽象計(jì)類與對(duì)象的概念對(duì)象與類對(duì)象:現(xiàn)實(shí)世界中某個(gè)具體的物理實(shí)體在計(jì)算機(jī)邏輯中的映射和體現(xiàn),其基本組成:對(duì)象標(biāo)識(shí)狀態(tài)(對(duì)象的靜態(tài)屬性)行為(對(duì)象的操作)(張三,男,吃飯)類:一種抽象的數(shù)據(jù)類型,是同種對(duì)象的集合與抽象。是Java程序的基本組成要素,描述了一類對(duì)象的狀態(tài)和行為,其基本成分包括:成員變量成員方法(人,性別,吃飯的過程)請(qǐng)大家分析“學(xué)生”“孫旭川”類與對(duì)象的概念對(duì)象與類類與

3、對(duì)象的另一實(shí)例對(duì)象是類的實(shí)例類與對(duì)象的另一實(shí)例對(duì)象是類的實(shí)例類的定義class 類名稱 數(shù)據(jù)類型 屬性名; .; 返回值類型 方法名稱(參數(shù)1, 參數(shù)2, .) 程序語句; .; return 表達(dá)式; Java中定義類的通用格式:類的定義class 類名稱Java中定義類的通用格式:Java中定義類的通用格式:class Student int stuNum; String stuName; char stuSex; int stuAge; void enrol() System.out.println(“學(xué)生”+stuName+” 已注冊(cè)入學(xué)”);void selectCourse()Sy

4、stem.out.println(“學(xué)生”+stuName+”已選課”);String getStuInfo()return “”學(xué)號(hào):”+stuNum+”t 姓名:”+stuName+”t 性別:”+stuSex+”t 年齡:”+stuAge;成員變量(對(duì)象屬性)成員方法(對(duì)象的行為或操作)Java中定義類的通用格式:class Student成員類的成員變量與成員方法成員變量1.命名約定遵循Java標(biāo)識(shí)符的基本規(guī)則遵循命名慣例2.默認(rèn)值未賦值的成員變量將被系統(tǒng)賦予默認(rèn)值成員方法基本結(jié)構(gòu)type methodName(parameter-list) /方法體 方法返回類型參數(shù)列表,可選方法名

5、類的成員變量與成員方法成員變量方法返回類型參數(shù)列表,可選方法對(duì)象及對(duì)象的使用對(duì)象對(duì)象是一個(gè)動(dòng)態(tài)概念,具有產(chǎn)生、使用和消亡的生命周期通過new操作符創(chuàng)建對(duì)象對(duì)象屬性的使用:對(duì)象名.屬性;對(duì)象方法的使用:對(duì)象名. 方法名();當(dāng)對(duì)象不再使用時(shí),將由系統(tǒng)的垃圾回收機(jī)制進(jìn)行回收。對(duì)象及對(duì)象的使用對(duì)象方法的使用分析下面程序段的輸出:public class Func public static double getArea(double l,double w) return l*w; public static void main(String args)double area=getArea(5.0,

6、8.0);System.out.println(“第1個(gè)矩形的面積為:”+area);System.out.println(“第1個(gè)矩形的面積為:”+getArea(10.0,12.0);getArea(8.0,12.0);調(diào)試運(yùn)行例35,觀察輸出值。方法的使用分析下面程序段的輸出:方法參數(shù)中的值傳遞與引用傳遞分析下面程序段的輸出:class Demopublic void increase(int x)x=x+5;class DemoTestpublic static void main(String args)Demo d=new Demo();int x=20;d.increase(x)

7、;System.out.println(x=+x);調(diào)試運(yùn)行例37,觀察輸出值當(dāng)參數(shù)為對(duì)象時(shí)傳遞的是引用當(dāng)參數(shù)為基本數(shù)據(jù)類型時(shí)傳遞的是值本身方法參數(shù)中的值傳遞與引用傳遞分析下面程序段的輸出:當(dāng)參數(shù)為對(duì)構(gòu)造方法構(gòu)造方法是一種特殊的方法,其語法格式如下類名稱() 程序語句;語法說明:構(gòu)造方法的名稱必須與類名一致。它沒有返回值。由于構(gòu)造方法主要是給其它類調(diào)用的,因此構(gòu)造方法的訪問權(quán)限一般都為public。構(gòu)造方法構(gòu)造方法是一種特殊的方法,其語法格式如下構(gòu)造方法及其重載構(gòu)造方法所完成的主要工作是幫助新創(chuàng)建的對(duì)象賦初值(也稱構(gòu)造函數(shù))。class 類名稱 訪問權(quán)限類名稱(類型1 參數(shù)1,類型2 參數(shù)2,

8、) 程序語句; . / 構(gòu)造方法沒有返回值 在使用構(gòu)造方法的時(shí)候需要注意:它與類具有相同的名稱。它沒有返回值。由于構(gòu)造方法主要是給其它類調(diào)用的,因此構(gòu)造方法的訪問權(quán)限一般都為public。構(gòu)造方法及其重載構(gòu)造方法所完成的主要工作是幫助新創(chuàng)建的對(duì)象賦構(gòu)造方法及其重載在執(zhí)行javac編譯java程序的時(shí)候,如果在程序中沒有明確聲明一構(gòu)造方法的話,系統(tǒng)會(huì)自動(dòng)為我們的類加入一個(gè)無參的且什么都不做的構(gòu)造方法。public Circle()在Java里,不僅普通方法可以重載,構(gòu)造方法也可以重載。只要構(gòu)造方法的參數(shù)個(gè)數(shù)不同,或是類型不同,便可定義多個(gè)名稱相同的構(gòu)造方法。注意在Java中,只要申明了一個(gè)構(gòu)造方

9、法(無論有沒有參數(shù)),則默認(rèn)的構(gòu)造方法就不會(huì)被生成。因此我們還需要在類中申明一個(gè)無參數(shù)的構(gòu)造方法。構(gòu)造方法及其重載在執(zhí)行javac編譯java程序的時(shí)候,如果3.3 繼承和多態(tài) 繼承和多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的兩個(gè)重要的概念。一、繼承 繼承是由一種現(xiàn)有的類創(chuàng)建新類的機(jī)制。先創(chuàng)建一個(gè)共有屬性的一般類,根據(jù)一般類再創(chuàng)建具有共有屬性的新類,新類繼承了一般類的屬性和行為,并根據(jù)需要增加它自己的屬性和行為。 由繼承得到的類稱為子類,被繼承的類稱為父類,也稱為基類或超類。3.3 繼承和多態(tài) 繼承和多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)類的層次結(jié)構(gòu)類繼承的語法形式Java繼承的可以采用以下的語法格式:class 父類 / 定

10、義父類 class 子類 extends 父類 / 用extends關(guān)鍵字實(shí)現(xiàn)類的繼承例如:class Student extends People / 聲明學(xué)生類Student為人員類People的子類類的層次結(jié)構(gòu)類繼承的語法形式二、多態(tài) 所謂多態(tài),是指一個(gè)程序中同名的不同方法共存的情況。在面向?qū)ο蟮某绦蛑?,多態(tài)的情況有多種,可以通過子類對(duì)父類方法的覆蓋實(shí)現(xiàn)多態(tài),也可以利用重載在同一個(gè)類中定義多個(gè)同名的不同方法來實(shí)現(xiàn)多態(tài)。 1、方法覆蓋 2、方法重載 3、抽象方法和抽象類二、多態(tài) 所謂多態(tài),是指一個(gè)程序中同名的不同方法共存方法的覆蓋1、方法的覆蓋 如果子類中的某個(gè)方法與其父類具有相同的名稱和

11、參數(shù)(個(gè)數(shù)和類型都相同),則稱該子類重構(gòu)了該方法(overriding),重構(gòu)也稱為覆蓋。這樣父類定義的方法在子類就“看不見”了,當(dāng)子類的這一方法被調(diào)用的時(shí)候,將直接使用子類定的方法。方法的覆蓋1、方法的覆蓋方法覆蓋有關(guān)方法重構(gòu)的規(guī)定子類重構(gòu)父類方法時(shí),子類方法的返回值類型應(yīng)當(dāng)與被重構(gòu)的方法的類型相同;子類不能重構(gòu)父類的final 和private 方法;子類不能用實(shí)例方法重構(gòu)父類的static 方法。子類的static 方法可重構(gòu)父類的static方法,但不能重構(gòu)父類的實(shí)例方法;子類方法重構(gòu)父類方法時(shí),子類方法的訪問權(quán)限修飾符不能嚴(yán)于父類方法的訪問修飾符;子類若要引用父類中被重構(gòu)的方法,應(yīng)使

12、用“super.方法名”的方式;方法覆蓋有關(guān)方法重構(gòu)的規(guī)定方法重載2、方法重載 如果在同一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的形參個(gè)數(shù)或有不同的形參類型,則稱該方法為被重載(Overloading)。在調(diào)用時(shí),Java 將根據(jù)實(shí)參個(gè)數(shù)或?qū)崊㈩愋瓦x擇匹配的方法。 成員方法的重載 構(gòu)造方法的重載方法重載2、方法重載多態(tài)方法的動(dòng)態(tài)調(diào)用類Dog和類Cat都繼承了Anima。Animal有一bark方法。多態(tài)方法的動(dòng)態(tài)調(diào)用多態(tài)Animal.java1 public class Animal 2 public void bark() 3 Dog.java1 public class Dog exte

13、nds Animal2 public void bark() 3 System.out.println(汪汪);4 5 多態(tài)Animal.java多態(tài)Cat.java1 public class Cat extends Animal2 public void bark() 3 System.out.println(喵喵);4 TestAnimal.java1 public class TestAnimal 2 public static void main (String args)3 4 Animal animal = new Dog();5 animal.bark();6 animal =

14、 new Cat();7 animal.bark();8 9 多態(tài)Cat.java多態(tài)輸出結(jié)果 汪汪喵喵 在Anima.java中的第2行,定義了一個(gè)空的bark函數(shù)。Dog和Cat都是從Anima中派生出來的。在Dog.java和Cat.java中的第3行分別覆蓋了bark函數(shù)。然后在TestAnimal.java中進(jìn)行測(cè)試,我們?cè)赥estAnimal的第4行定義了一個(gè)Animal類型的對(duì)象,首先我們賦給它一個(gè)Dog類型的對(duì)象,然后調(diào)用其bark進(jìn)行測(cè)試。然后在第6行又賦給它一個(gè)Cat類型的對(duì)象,并調(diào)用bark進(jìn)行測(cè)試。從輸出的結(jié)果可以看到,在不同的時(shí)候animal對(duì)象調(diào)用bark所產(chǎn)生的結(jié)

15、果是不同的。多態(tài)輸出結(jié)果 多態(tài)輸出結(jié)果 汪汪喵喵在Anima.java中的第2行,定義了一個(gè)空的bark函數(shù)。Dog和Cat都是從Anima中派生出來的。在Dog.java和Cat.java中的第3行分別覆蓋了bark函數(shù)。然后在TestAnimal.java中進(jìn)行測(cè)試,我們?cè)赥estAnimal的第4行定義了一個(gè)Animal類型的對(duì)象,首先我們賦給它一個(gè)Dog類型的對(duì)象,然后調(diào)用其bark進(jìn)行測(cè)試。然后在第6行又賦給它一個(gè)Cat類型的對(duì)象,并調(diào)用bark進(jìn)行測(cè)試。從輸出的結(jié)果可以看到,在不同的時(shí)候animal對(duì)象調(diào)用bark所產(chǎn)生的結(jié)果是不同的。多態(tài)輸出結(jié)果 抽象類和抽象方法3、抽象類和抽象

16、方法在Java自上而下的類的繼承結(jié)構(gòu)層次中,位于上層的類應(yīng)是更加具有通用性和更加的抽象,有時(shí)由于對(duì)象高級(jí)抽象的需要,我們需要類只是申明方法的首部,而不需要說明其方法的主體,其主體部分由子類來完成。在Java中,使用abstract關(guān)鍵字可以實(shí)現(xiàn)這個(gè)功能。需要注意的是,由于抽象類的抽象性,因此其不能創(chuàng)建任何的對(duì)象,抽象類只是用來被其子類繼承。抽象類和抽象方法3、抽象類和抽象方法抽象類和抽象方法抽象類的定義規(guī)則:抽象類和抽象方法必須由abstract關(guān)鍵字來修飾。抽象類不能實(shí)例化,也就是不能用new關(guān)鍵字去產(chǎn)生對(duì)象。抽象的方法主需要申明,不需要具體的實(shí)現(xiàn)。含抽象方法的類必須申明為抽象類,抽象類的子

17、類必須覆蓋實(shí)現(xiàn)父類的所有抽象方法后才能被實(shí)例化,否則這個(gè)子類還是抽象類。抽象類中除了抽象方法外,也可包含具體的數(shù)據(jù)和具體的方法。抽象類和抽象方法抽象類的定義規(guī)則:抽象類和抽象方法抽象類的定義格式如下:abstract class 類名稱 /定義抽象類 申明數(shù)據(jù)成員; 訪問權(quán)限 返回值數(shù)據(jù)類型 方法名稱 (參數(shù).) /普通的方法 . 訪問權(quán)限 abstract 返回值數(shù)據(jù)類型 方法名稱 (參數(shù).); /抽象方法例如:把Animal類申明為abstract,然后把bark申明為抽象的方法。 public abstract class Animal public abstract void bark

18、(); 抽象類和抽象方法抽象類的定義格式如下:3.4 接口和包一、接口 與C+不同的是,Java不支持多重繼承。接口中可以實(shí)現(xiàn)“多重繼承”,且一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這些機(jī)制使接口提供了比多重繼承更簡(jiǎn)單、更靈活、更強(qiáng)大的功能。1、接口的定義 接口在語法上與抽象類非常相似,它定義了一些抽象方法和常量,形成一個(gè)屬性集合。該屬性集合通常對(duì)應(yīng)于某一組功能。3.4 接口和包一、接口接口的定義2、定義接口的一般語法格式如下:public interface 接口名 extends 父接口名列表 public static final 數(shù)據(jù)類型 常量標(biāo)識(shí)符=常量值; public abstract 返回值類

19、型 方法名(參數(shù)); 說明: 在接口中只提供方法的定義但不提供其具體實(shí)現(xiàn),接口提供了方法原型的封裝機(jī)制。接口的定義2、定義接口的一般語法格式如下:接口的實(shí)現(xiàn)3、接口的實(shí)現(xiàn) 接口定義的僅僅是實(shí)現(xiàn)某一特定功能的對(duì)外接口和規(guī)范,并沒有真正實(shí)現(xiàn)這個(gè)功能。這個(gè)功能的真正實(shí)現(xiàn)是在“繼承”這個(gè)接口的各個(gè)類中完成的,要在這些類中具體定義接口中各抽象方法的方法體。 定義好一個(gè)接口之后,一個(gè)或多個(gè)類可以實(shí)現(xiàn)這個(gè)接口。接口的實(shí)現(xiàn)3、接口的實(shí)現(xiàn)要實(shí)現(xiàn)一個(gè)接口必須在類的定義中包含一個(gè)implements子句。包含implements關(guān)鍵字的一般語法格式如下:修飾符 class extends 父類名 implement

20、s接口明列表 /類體說明: 一個(gè)類也可以實(shí)現(xiàn)多個(gè)接口。如果一個(gè)類要實(shí)現(xiàn)多個(gè)接口,那么接口之間要用逗號(hào)隔開。要實(shí)現(xiàn)一個(gè)接口必須在類的定義中包含一個(gè)implements子二、Java中的包 為了更好地組織類,Java提供了包機(jī)制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個(gè)默認(rèn)的無名包。Java程序編譯的類被放在包內(nèi),要訪問類就要給出類所屬的包名,來指明類是在哪一個(gè)包中,以便能夠找到該類。二、Java中的包 為了更好地組織類,Java提供1、包的定義 可以使用package語句指明源文件中的類屬于哪個(gè)具體的包。其一般的語法格式為: package包名; 例如:packag

21、e jyvtc;1、包的定義2包的使用 包是類的集合,將類組織成包是為了更好地利用包中的類。同一個(gè)包中的類相互訪問不用指定包名;如果要引用其他包中的公共類,則需要指出包名。因此在程序中首先需要用import語句將該類所在的包導(dǎo)入。導(dǎo)入包的一般語法格式如下: import 包名;2包的使用3、包的訪問權(quán)限 包除了提供類和接口的機(jī)制外,還提供了包一級(jí)的訪問控制機(jī)制。包一級(jí)的訪問控制機(jī)制包含兩個(gè)方面,一是對(duì)于包中類和接口的訪問控制,二是對(duì)于類成員的訪問控制。 Java語言中的訪問權(quán)限有public、protected、默認(rèn)的包訪問權(quán)限和private。 4種訪問控制符的權(quán)限見表3-1所示。3、包的訪

22、問權(quán)限訪問控制符同一類同一包不同包中的子類不同包中的非子類private是否否否無訪問控制符是是否否protected是是是否public是是是是表3-1 訪問控制符的權(quán)限表3-1 訪問控制符的權(quán)限Java中的API 所謂應(yīng)用程序接口API(Application Program Interface)實(shí)際上就是一些已經(jīng)寫定義好的、可供用戶直接調(diào)用的類庫。Java API也是采用包的形式組織起來的,功能相關(guān)的類和接口放在同一個(gè)包中,程序設(shè)計(jì)人員可以方便地查找與使用。 最常用的是Java核心包和Java擴(kuò)展包。Java中的API 所謂應(yīng)用程序接口API(App3.5 Java異常處理1、 異常的基

23、本概念 異常(Exception)指的是程序執(zhí)行過程中出現(xiàn)的非正常情況。在Java程序的執(zhí)行過程中,任何中斷正常程序流程的情況都是錯(cuò)誤或異常。異常經(jīng)常出現(xiàn)在以下情況:打開的文件不存在除數(shù)為零數(shù)組下標(biāo)越界網(wǎng)絡(luò)連接突然中斷內(nèi)存空間不夠3.5 Java異常處理1、 異常的基本概念2、異常處理機(jī)制 在Java語言中,所有的異常都是用類來表示的。當(dāng)程序發(fā)生異常時(shí),會(huì)生成某個(gè)異常類對(duì)象,異常對(duì)象一旦產(chǎn)生,系統(tǒng)中就一定有相應(yīng)的機(jī)制來處理,確保用戶程序在執(zhí)行期間不會(huì)死機(jī)、死循環(huán)或其他對(duì)操作系統(tǒng)的損害,從而保證了整個(gè)程序運(yùn)行的安全性。2、異常處理機(jī)制3、Java中的異常類 Java中的每個(gè)異常都是Throwab

24、le類及其子類的實(shí)例對(duì)象。Throwable類是Java.lang包中一個(gè)專門用來處理異常的類,它有兩個(gè)標(biāo)準(zhǔn)的子類:Error和Exception類,即錯(cuò)誤和異常子類。3、Java中的異常類異常類的層次Java 的異常類是處理運(yùn)行錯(cuò)誤的特殊類,每一個(gè)異常類都對(duì)應(yīng)一種特定的運(yùn)行錯(cuò)誤。所有的Java 異常類都是系統(tǒng)類庫中的Exception 類的子類。其類的層次結(jié)構(gòu)如圖所示。Throwable 類是類庫java.1ang 包中的一個(gè)類,它派生了兩個(gè)子類:Exception和Error。其中Error 類由系統(tǒng)保留,而Exception類則供應(yīng)用程序使用。異常類的層次Java 的異常類是處理運(yùn)行錯(cuò)誤

25、的特殊類,每一個(gè)異常類的層次Error類例如,動(dòng)態(tài)鏈接錯(cuò)誤、虛擬機(jī)錯(cuò)誤等,由Java虛擬機(jī)生成并拋棄。通常,Java 程序不對(duì)這類異常進(jìn)行處理。在Java 編程語言中,錯(cuò)誤(Error)類定義被認(rèn)為是不能恢復(fù)的嚴(yán)重錯(cuò)誤。在大多數(shù)情況下,當(dāng)遇到這樣的錯(cuò)誤時(shí),建議讓程序中斷。Exception類一般性程序故障,一般由用戶代碼或類庫生成并拋出,Java 程序需要對(duì)它們進(jìn)行處理。同其他的類一樣,Exception 類有自己的方法和屬性Exception類構(gòu)造方法有兩個(gè)public Exception();public Exception(String s);異常類的層次Error類4、異常的處理 (1)異常的捕獲與處理 Java語言提供了try-catch-

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論