JAVA編程基礎(chǔ)-06面向?qū)ο蟾呒?jí)特性_第1頁(yè)
JAVA編程基礎(chǔ)-06面向?qū)ο蟾呒?jí)特性_第2頁(yè)
JAVA編程基礎(chǔ)-06面向?qū)ο蟾呒?jí)特性_第3頁(yè)
JAVA編程基礎(chǔ)-06面向?qū)ο蟾呒?jí)特性_第4頁(yè)
JAVA編程基礎(chǔ)-06面向?qū)ο蟾呒?jí)特性_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、文檔供參考,可復(fù)制、編制,期待您的好評(píng)與關(guān)注! JAVA編程基礎(chǔ) 面向?qū)ο蟾呒?jí)特性3 Sept. 2008 Neusoft Confidential66 / 66第六章 面向?qū)ο蟾呒?jí)特性目標(biāo):介紹Java中類(lèi)的繼承,封裝,多態(tài),方法的覆蓋,抽象類(lèi)、接口及內(nèi)部類(lèi)等面向?qū)ο蟮母呒?jí)特性。通過(guò)本課的學(xué)習(xí),學(xué)員應(yīng)該掌握如下知識(shí):1)類(lèi)的繼承、封裝、多態(tài)2)抽象類(lèi)及接口3)引用數(shù)據(jù)類(lèi)型的轉(zhuǎn)換4)訪問(wèn)權(quán)限修飾符的使用5)final關(guān)鍵字教學(xué)方法:講授ppt上機(jī)練習(xí)本章要點(diǎn)類(lèi)的繼承繼承的規(guī)則子類(lèi)的構(gòu)造器Java中的包和訪問(wèn)修飾符方法的覆蓋引用數(shù)據(jù)類(lèi)型的轉(zhuǎn)換向下轉(zhuǎn)型向上轉(zhuǎn)型多態(tài)特征動(dòng)態(tài)綁定抽象類(lèi)和接口定義抽象方

2、法區(qū)別Final關(guān)鍵字內(nèi)部類(lèi)Contents12345類(lèi)的繼承Java包的概念訪問(wèn)權(quán)限修飾符方法的覆蓋引用類(lèi)型的轉(zhuǎn)換類(lèi)的繼承類(lèi)的繼承在Java中定義一個(gè)類(lèi)時(shí),讓該類(lèi)通過(guò)關(guān)鍵字extends繼承一個(gè)已有的類(lèi),這就是類(lèi)的繼承(泛化)。被繼承的類(lèi)稱為父類(lèi)(超類(lèi),基類(lèi)),新的類(lèi)稱為子類(lèi)(派生類(lèi))。子類(lèi)繼承父類(lèi)的所有屬性和方法,同時(shí)也可以增加自己的屬性和方法。使用繼承繼承的語(yǔ)法和規(guī)則繼承的語(yǔ)法示例Employee.javaWorker.java修飾符 class 子類(lèi)名 extends 父類(lèi)名繼承的語(yǔ)法和規(guī)則繼承的語(yǔ)法 練習(xí) Officer.javaTestOfficer.java用 java中類(lèi)的繼承

3、機(jī)制,實(shí)現(xiàn) Officer類(lèi),并設(shè)計(jì)一個(gè)測(cè)試程序TestOfficer類(lèi),來(lái)訪問(wèn)Officer類(lèi)繼承的好處使編碼更高效易維護(hù)代碼的重用繼承的語(yǔ)法和規(guī)則繼承的規(guī)則Java中只支持單繼承,也就是說(shuō)每個(gè)類(lèi)只能有一個(gè)父類(lèi),不允許有多重繼承一個(gè)父類(lèi)可以有多個(gè)子類(lèi)子類(lèi)繼承父類(lèi)所有的屬性和方法子類(lèi)實(shí)例化的過(guò)程子類(lèi)實(shí)例化時(shí)先實(shí)例化其父類(lèi),然后實(shí)例化子類(lèi)。要先調(diào)用父類(lèi)的構(gòu)造器,父類(lèi)構(gòu)造器運(yùn)行完畢,才調(diào)用子類(lèi)的構(gòu)造器。如果實(shí)例化類(lèi)D,說(shuō)出構(gòu)造器執(zhí)行的順序。ABD示例 SubClassConstruct.javaCEsuper和this關(guān)鍵字super() 作用:調(diào)用父類(lèi)的構(gòu)造器 只能出現(xiàn)在子類(lèi)的構(gòu)造器中,且必須是

4、第一行 super()中的參數(shù),決定了調(diào)用父類(lèi)哪個(gè)構(gòu)造器 如果子類(lèi)構(gòu)造器中沒(méi)有出現(xiàn)super,那么編譯器會(huì)默認(rèn)加上super(),即調(diào)用父類(lèi)的空構(gòu)造器,如果父類(lèi)沒(méi)有空構(gòu)造器,編譯器提示錯(cuò)誤。super和this關(guān)鍵字this() 作用:調(diào)用本類(lèi)的構(gòu)造器 只能寫(xiě)在構(gòu)造器的第一行在同一個(gè)構(gòu)造器中super()和this()不能同時(shí)出現(xiàn)示例 Person.java、Student3.java、Student4.java子類(lèi)的構(gòu)造器子類(lèi)的構(gòu)造器 子類(lèi)不能繼承父類(lèi)的構(gòu)造器在子類(lèi)中創(chuàng)建構(gòu)造器時(shí),必須調(diào)用父類(lèi)的構(gòu)造器子類(lèi)可以在自己的構(gòu)造器中使用super關(guān)鍵字來(lái)調(diào)用父類(lèi)的構(gòu)造器super (參數(shù)1,參數(shù)2,

5、);如果使用super關(guān)鍵字調(diào)用父類(lèi)構(gòu)造器,必須寫(xiě)在該子類(lèi)構(gòu)造器的第一行如調(diào)用的是父類(lèi)中無(wú)參的構(gòu)造器,則可以不寫(xiě)super( )如果子類(lèi)中調(diào)用了父類(lèi)無(wú)參的構(gòu)造器,而父類(lèi)中沒(méi)有無(wú)參構(gòu)造器則系統(tǒng)編譯出錯(cuò)super和this關(guān)鍵字super. 指向父類(lèi)的引用。this. 指向本類(lèi)的引用。類(lèi)的繼承給定以下代碼:下列描述哪些是正確的_?A. 編譯失敗C. 在第7行拋出異常B. 代碼正常運(yùn)行D. 在第2行拋出異常答案:AContents12345類(lèi)的繼承Java包的概念訪問(wèn)權(quán)限修飾符方法的覆蓋引用類(lèi)型的轉(zhuǎn)換Java中的包包的概念及應(yīng)用在Java中,包主要有以下用途 :有助于避免命名沖突包允許在更廣的范圍內(nèi)

6、保護(hù)類(lèi)、數(shù)據(jù)和方法包可以是類(lèi)、接口和子包的集合Java中的包包的概念及應(yīng)用將類(lèi)放入包中package 包名 ;注意:package語(yǔ)句作為java源文件的第一條語(yǔ)句每個(gè)源文件只能聲明一個(gè)包如果沒(méi)有package語(yǔ)句,則默認(rèn)為無(wú)名包Java中常用的包java.lang Java語(yǔ)言包,任何程序中,該包都被自動(dòng)導(dǎo)入。java.awt 圖形用戶界面包。java.awt.event 圖形用戶界面事件處理包。java.swing 跨平臺(tái)輕量級(jí)組件包。Java中常用的包java.sql 數(shù)據(jù)庫(kù)訪問(wèn)包。java.io 這個(gè)包由對(duì)您的輸入/輸出操作有用的類(lèi)組成。java.util 該包提供了許多創(chuàng)建如:lis

7、ts, calendar, date等所需要的類(lèi)和接口。 該包提供了許多進(jìn)行TCP/IP網(wǎng)絡(luò)編程的類(lèi)和接口。import導(dǎo)入包中的類(lèi)訪問(wèn)其它包中的類(lèi)包名.類(lèi)名package test;class Cat extends p08.Animal使用import關(guān)鍵字引入其它包中的類(lèi)package test;import p08.Animal;class Cat extends Animal位于同一包中的類(lèi)可以直接訪問(wèn)import導(dǎo)入包中的類(lèi)訪問(wèn)其他包中的類(lèi)導(dǎo)入包中所有的類(lèi)import 包名.*;導(dǎo)入子包中所有的類(lèi)import 包名.子包名.*;導(dǎo)入包中的某個(gè)類(lèi)import 包名.子包名.類(lèi)名;Co

8、ntents12345類(lèi)的繼承Java包的概念訪問(wèn)權(quán)限修飾符方法的覆蓋引用類(lèi)型的轉(zhuǎn)換封裝信息隱藏,隱藏對(duì)象的實(shí)現(xiàn)細(xì)節(jié),不讓用戶看到將東西包裝在一起,然后以新的完整形式呈現(xiàn)出來(lái) 將方法和屬性一起包裝到一個(gè)單元中,單元以類(lèi)的形式實(shí)現(xiàn)“隱藏屬性、方法或?qū)崿F(xiàn)細(xì)節(jié)的過(guò)程稱為封裝?!狈庋b封裝的目的隱藏類(lèi)的實(shí)現(xiàn)細(xì)節(jié)讓使用者只能通過(guò)事先定制好的方法來(lái)訪問(wèn)數(shù)據(jù),可以方便地加入控制邏輯,限制對(duì)屬性的不合理操作便于修改,增強(qiáng)代碼的可維護(hù)性可進(jìn)行數(shù)據(jù)檢查示例Employor.javaTestEmployer.java訪問(wèn)權(quán)限修飾符訪問(wèn)權(quán)限修飾符訪問(wèn)權(quán)限修飾符訪問(wèn)權(quán)限修飾符用來(lái)控制類(lèi)的成員和類(lèi)的使用范圍類(lèi)成員的訪問(wèn)權(quán)限

9、修飾符:private、default、protected、public類(lèi)的訪問(wèn)權(quán)限修飾符:public、defaultprivatedefaultprotectedpublic同一類(lèi)同一包中的類(lèi)不同包中的子類(lèi)其他包中的類(lèi)示例:Access.java TestAccess.java訪問(wèn)權(quán)限修飾符 練習(xí)給定以下代碼:下列選項(xiàng)正確的是?A. 編譯失敗B. 成功編譯并執(zhí)行C. 編譯成功,但運(yùn)行時(shí)在ClassTest.java的第5行拋出異常D.編譯成功,但運(yùn)行時(shí)在ClassTest.java的第6行拋出異常答案:AContents12345類(lèi)的繼承Java包的概念訪問(wèn)權(quán)限修飾符方法的覆蓋引用類(lèi)型的轉(zhuǎn)

10、換方法的覆蓋方法的覆蓋(override)重寫(xiě)(rewrite)對(duì)從父類(lèi)中繼承來(lái)的方法進(jìn)行改造在子類(lèi)繼承父類(lèi)時(shí)發(fā)生方法覆蓋的規(guī)則在子類(lèi)中的覆蓋方法與父類(lèi)中被覆蓋的方法應(yīng)具有相同的方法名相同的參數(shù)列表(參數(shù)數(shù)量、參數(shù)類(lèi)型、參數(shù)順序都要相同)相同的返回值類(lèi)型子類(lèi)覆蓋方法的訪問(wèn)權(quán)限要不小于父類(lèi)中被覆蓋方法的訪問(wèn)權(quán)限示例Worker.java方法的覆蓋 練習(xí)給定下列代碼:當(dāng)在第6行加入什么方法時(shí)會(huì)引起編譯錯(cuò)誤?答案:B方法的覆蓋 練習(xí)給定類(lèi)class A int method1(int a, double b) return 0; ,在其子類(lèi)中下列哪些覆蓋方法可以正確的聲明_A. int method

11、1(int a, double b) return 1; B. int method1(int a, long b) return 1; C. int method1(int b,double a)return 1;D. short method1(int a, double b) return 1: E. int method1(double b, int a) return 1; 答案:A CContents12345類(lèi)的繼承Java包的概念訪問(wèn)權(quán)限修飾符方法的覆蓋引用類(lèi)型的轉(zhuǎn)換上溯造型引用數(shù)據(jù)類(lèi)型的轉(zhuǎn)換(對(duì)象造型)示例: Upcasting.java向上轉(zhuǎn)型(Upcasting) 子類(lèi)轉(zhuǎn)

12、換為父類(lèi),自動(dòng)轉(zhuǎn)換;前提 具有繼承或?qū)崿F(xiàn)關(guān)系向上轉(zhuǎn)換損失了子類(lèi)新擴(kuò)展的屬性和方法僅可以使用從父類(lèi)中繼承的屬性和方法下溯造型從父類(lèi)引用轉(zhuǎn)換為子類(lèi)引用向下轉(zhuǎn)型的原則:強(qiáng)制轉(zhuǎn)換只有曾經(jīng)做過(guò)向上轉(zhuǎn)型的對(duì)象,才能再向下轉(zhuǎn)型,否則會(huì)發(fā)生運(yùn)行期異常。示例: DownCasting植物生物動(dòng)物Animal a = new Cat( );Cat c = (Cat)a;人類(lèi)貓類(lèi)向下轉(zhuǎn)型instanceof 運(yùn)算符instanceof 運(yùn)算符判斷一個(gè)類(lèi)是否實(shí)現(xiàn)了某個(gè)接口對(duì)象 instanceof 接口判斷一個(gè)實(shí)例對(duì)象是否屬于一個(gè)類(lèi)對(duì)象 instanceof 類(lèi)它的返回值是boolean型的示例InstanceofD

13、emo.javaContents678910多態(tài)抽象類(lèi)接口final關(guān)鍵字內(nèi)部類(lèi)多態(tài)多態(tài)(polymorphism)也叫動(dòng)態(tài)綁定、池綁定,指多種表現(xiàn)形態(tài).動(dòng)態(tài)綁定:指在運(yùn)行的時(shí)候,根據(jù)句柄實(shí)際指向的類(lèi)型來(lái)決定調(diào)用哪一個(gè),相同類(lèi)型的變量調(diào)用相同的方法,執(zhí)行的具體代碼卻不同。在執(zhí)行期間(而非編譯期間)判斷所引用對(duì)象的實(shí)際類(lèi)型,根據(jù)其實(shí)際的類(lèi)型調(diào)用其相應(yīng)的方法。多態(tài)最大限度的增加了程序的可擴(kuò)展性。分為兩種表現(xiàn)形式 賦值多態(tài) 傳參多態(tài)(隱式的賦值多態(tài))示例fuzhi.java、chuancan.java37多態(tài)多態(tài)的存在有三個(gè)必要條件: 要有繼承 要有重寫(xiě) 父類(lèi)引用指向子類(lèi)對(duì)象38多態(tài)練習(xí)在停車(chē)場(chǎng)收費(fèi)

14、系統(tǒng)中,收費(fèi)者會(huì)根據(jù)車(chē)型的不同收取不同的停車(chē)費(fèi)??蛙?chē):15元/小時(shí);卡車(chē):12元/小時(shí);轎車(chē):8元/小時(shí);摩托車(chē):3元/小時(shí)。編寫(xiě)程序完成此功能39Contents678910多態(tài)抽象類(lèi)接口final關(guān)鍵字內(nèi)部類(lèi)抽象類(lèi)抽象類(lèi)抽象類(lèi)是抽象方法和非抽象方法的集合訪問(wèn)權(quán)限修飾符 abstract class 類(lèi)名 特殊情況全部是抽象方法全部為非抽象方法abtract class A String name;abstract int method1(int a, int b);void sayHi( )System.out.println(“Hello!”);抽象方法抽象方法只有方法聲明,沒(méi)有方法實(shí)現(xiàn)

15、的方法訪問(wèn)權(quán)限修飾符 abstract 返回值類(lèi)型abstract class A abstract int method1(int a, int b);抽象方法名 (參數(shù)列表) ;抽象類(lèi)的規(guī)則抽象類(lèi)注意:抽象類(lèi)不能被實(shí)例化;其包含的抽象方法必須在其子類(lèi)中被實(shí)現(xiàn),否則該子類(lèi)只能聲明為abstract;抽象方法不能為static;在下列情況下,一個(gè)類(lèi)必須聲明為抽象類(lèi):當(dāng)一個(gè)類(lèi)的一個(gè)或多個(gè)方法是抽象方法時(shí);當(dāng)類(lèi)是一個(gè)抽象類(lèi)的子類(lèi),并且沒(méi)有實(shí)現(xiàn)父類(lèi)的所有抽象方法,即只實(shí)現(xiàn)部分;當(dāng)一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口,并且不能為全部抽象方法都提供實(shí)現(xiàn)時(shí);抽象類(lèi) 練習(xí)給定以下代碼:執(zhí)行下列哪些操作后,可以讓代碼通過(guò)編譯?

16、A.B.C.D.對(duì)methodA方法添加方法體將57行,用“;”代替刪除class前的abstract關(guān)鍵字刪除methodA方法前的abstract關(guān)鍵字E.刪除methodB方法前的abstract關(guān)鍵字答案:BEContents678910多態(tài)抽象類(lèi)接口final關(guān)鍵字內(nèi)部類(lèi)接口interface接口是常量和抽象方法的集合,包含常量和方法的定義,而沒(méi)有方法的實(shí)現(xiàn),也沒(méi)有構(gòu)造函數(shù)。接口不是一個(gè)類(lèi),不能實(shí)例化;JJava只支持單繼承,但可以用接口來(lái)實(shí)現(xiàn)現(xiàn)實(shí)中多繼承的現(xiàn)象。接口可以使方法的定義和實(shí)現(xiàn)相分離,降低模塊之間或系統(tǒng)間的耦合性。定義格式如下:public interface Stude

17、nt int age = 16;void study();46類(lèi)實(shí)現(xiàn)接口接口必須通過(guò)類(lèi)來(lái)實(shí)現(xiàn)它的抽象方法,類(lèi)實(shí)現(xiàn)接口的關(guān)鍵字為implements。如果一個(gè)類(lèi)要實(shí)現(xiàn)一個(gè)接口,那么這個(gè)類(lèi)就必須實(shí)現(xiàn)接口中所有抽象方法,否則這個(gè)類(lèi)只能聲明為抽象類(lèi)。格式如下:public class MyClass implements Student/實(shí)現(xiàn)接口中所有抽象方法47接口的特點(diǎn)接口使用interface關(guān)鍵字來(lái)定義,而不是class。接口中沒(méi)有自己的構(gòu)造函數(shù),接口中定義的方法全部都是抽象方法,即只提供方法的定義,而沒(méi)有提供方法的具體實(shí)現(xiàn)的語(yǔ)句,并且是public的。接口中定義的變量都是公共靜態(tài)最終變量(p

18、ublic static final)。接口采用多繼承機(jī)制(也就是一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,一個(gè)類(lèi)可以實(shí)現(xiàn)多繼承了) ,而不像類(lèi)一樣采用單繼承機(jī)制。多個(gè)無(wú)關(guān)的類(lèi)可以實(shí)現(xiàn)同一個(gè)接口接口可以繼承其它的接口,并添加新的屬性和抽象方法。接口默認(rèn): 常量:public static final 抽象方法: public abstract48接 口(interface) 練習(xí)給定以下代碼:下列選項(xiàng)中,哪些選項(xiàng)可以用來(lái)替代第2行代碼?A. final int k = 4;B.C.public int k =4;static int k = 4;D. private int k = 4;E.abstract i

19、nt k = 4;答案:ABC接 口(interface) 練習(xí)下列選項(xiàng)中,哪些可以定義在一個(gè)接口中?答案:AB接口與抽象類(lèi)的區(qū)別接口不能含有任何非抽象方法,而抽象類(lèi)可以。類(lèi)可以實(shí)現(xiàn)許多接口,但只能有一個(gè)父類(lèi)。接口不是類(lèi)分級(jí)結(jié)構(gòu)的一部分,沒(méi)有聯(lián)系的類(lèi)可以實(shí)現(xiàn)相同的接口。51類(lèi)的繼承class A extends B class A implements C, D class Bextendsclass Ainterface Cimplementsclass Aclass A extends B implements C, D interface Dimplementsclass Bextend

20、sinterface Cimplementsinterface Dimplementsclass A52抽象類(lèi)的繼承class A extends B abstract class A implements C, D abstract class Bextendsclass Ainterface Cimplementsabstract class ainterface Dimplementsabstract class A extends B implements C, D abstract class Bextendsinterface Cimplementsinterface Dimple

21、mentsabstract class A53接口的繼承interface A extends B, C, D interface Bextendsinterface Cextendsinterface Dextendsinterface A54訪問(wèn)接口中常量public static final int MAX_SPEED=100;有三種方式: 對(duì)象名.MAX_SPEED 類(lèi)名. MAX_SPEED 接口名. MAX_SPEED55接口練習(xí)編寫(xiě)代碼,實(shí)現(xiàn)下面的結(jié)構(gòu),在主函數(shù)中調(diào)用Person對(duì)象的think方法,調(diào)用Dog對(duì)象的call方法,調(diào)用Animal接口的run方法。Animalru

22、n()eat()Persont hink()Dogcall()56Contents678910多態(tài)抽象類(lèi)接口final關(guān)鍵字內(nèi)部類(lèi)final關(guān)鍵字final關(guān)鍵字final可以修飾的元素:類(lèi):不能被繼承變量(屬性和局部變量):不能被重新賦值 在聲明時(shí)賦值,或在構(gòu)造器中賦值 系統(tǒng)不會(huì)對(duì)final屬性默認(rèn)的賦初始值方法:不能在子類(lèi)中被覆蓋,即不能修改。示例 FinalTest.javaContents678910多態(tài)抽象類(lèi)接口final關(guān)鍵字內(nèi)部類(lèi)內(nèi)部類(lèi)內(nèi)部類(lèi)(嵌套類(lèi))內(nèi)部類(lèi)就是定義在另一個(gè)類(lèi)內(nèi)部的類(lèi)。內(nèi)部類(lèi)對(duì)于同一包中的其它類(lèi)來(lái)說(shuō),內(nèi)部類(lèi)能夠隱藏起來(lái)。注意內(nèi)部類(lèi)可以訪問(wèn)其外部類(lèi)中所有的屬性和方法無(wú)需創(chuàng)建外部類(lèi)的對(duì)象,即可從內(nèi)部類(lèi)訪問(wèn)外部類(lèi)的變量和方法。必須創(chuàng)建內(nèi)部類(lèi)的對(duì)象,否則無(wú)法從外部類(lèi)訪問(wèn)內(nèi)部類(lèi)的變量和方法。如果內(nèi)部類(lèi)中有和外部類(lèi)同名的變量或方法,則內(nèi)部類(lèi)的變量和方法將獲得比外部類(lèi)的變量和方法更高的優(yōu)先級(jí)。不能定義static變量?jī)?nèi)部類(lèi)類(lèi)中定義的內(nèi)部類(lèi)public class Outerprivate int varOuter=100;class Innerint varInn

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論