基礎(chǔ)入門到精通第6章繼承_第1頁
基礎(chǔ)入門到精通第6章繼承_第2頁
基礎(chǔ)入門到精通第6章繼承_第3頁
基礎(chǔ)入門到精通第6章繼承_第4頁
基礎(chǔ)入門到精通第6章繼承_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 100 y第 6 章 繼承第 6 章繼承繼承是面向?qū)ο缶幊痰闹匾卣髦?。顧名思義,繼承就是在現(xiàn)有類的基礎(chǔ)上構(gòu)建新類以滿足新的要求。在繼承過程中,新的類繼承原來的和實(shí)例變量,并且能添加的方法和實(shí)例變量。在本章中主要講解的內(nèi)容和使用、多態(tài)和動(dòng)態(tài)綁定以及 Object 類。派生類的創(chuàng)建使用、覆寫、抽象類的創(chuàng)建派生類Java學(xué)習(xí)3671706.1面向?qū)ο笳Z言的一個(gè)重要特性就是繼承。繼承是指一些類,可以再進(jìn)一步這些類的子類,而子類具有父類已經(jīng)擁有的一些和屬性,這跟現(xiàn)實(shí)中的父子是十分相似的,所以面向?qū)ο蟀堰@種機(jī)制稱為繼承,子類也稱為派生類。6.1.1繼承的使用繼承是在已有類的基礎(chǔ)上構(gòu)建新的類。已有的類

2、稱為超類、父類或基類,產(chǎn)生的新類稱為子類或派生類。在動(dòng)物種類中可以、大象和猴子等多種動(dòng)物,這里通過這個(gè)為原型來學(xué)習(xí)繼承。例如,可以構(gòu)建一個(gè) Animal 類,如下所示。在 Animal 類中,有種類、名字、體重這些實(shí)例變量描述動(dòng)物,以及呼吸、吃飯、睡覺這些表示動(dòng)物的動(dòng)作。下面在 Animal 的基礎(chǔ)上構(gòu)建一個(gè)類 Tiger 來表示。 101 y/Tiger 類繼承 Animal 類class Tiger extends Animal String tigerType;String from; void tigerRun()System.out.println("the tiger r

3、un");class AnimalString type;/種類String name;/名字int age;/int weight;/體重void eat()/吃飯System.out.println("anmal eat");void breath()/呼吸System.out.println("animal breath");void sleep()/睡覺System.out.println("animal sleep");Java 從入門到精通注意 Tiger 類的第一行class Tiger extends Ani

4、mal,表示 Tiger 類繼承自 Animal 類。通過繼承,新生成的tigerType、from 和類不僅繼承了 Animal 類的所有實(shí)例變量和tigerRun。Tiger 類的使用如下所示。,還有的獨(dú)有的字段可以看到 Tiger 類繼承了Animal 類的所有屬性和序的運(yùn)行結(jié)果如下。,并有特有的屬性和。程 102 yAnimal 屬性:種類=Tiger Animal 屬性:名字=huhu Animal 屬性: 12Animal 屬性:體重 120Tiger 屬性:種類=東北虎Tiger 屬性:產(chǎn)地=長白山Animal:呼吸animal breath Animal:吃飯anmal eat

5、Animal:睡覺animal sleep Tiger:奔跑the tiger runpublic class TigerDemo public static void main(String args ) /構(gòu)建一個(gè)Tiger 對(duì)象Tiger tiger = new Tiger();/對(duì) tiger 的屬性進(jìn)行賦值tiger.type = "Tiger" ="huhu" tiger.age=12; tiger.weight=120; tiger.tigerType="東北虎" tiger.from="長

6、白山"/打印出屬性值System.out.println("Animal 屬性:種類="+tiger.type); System.out.println("Animal 屬性:名字="+); System.out.println("Animal 屬性:"+tiger.age); System.out.println("Animal 屬性:體重"+tiger.weight); System.out.println("Tiger 屬性:種類="+tiger.tigerT

7、ype); System.out.println("Tiger 屬性:產(chǎn)地="+tiger.from);/使用 tiger 調(diào)用System.out.println("Animal:呼吸"); tiger.breath(); System.out.println("Animal:吃飯"); tiger.eat();System.out.println("Animal:睡覺"); tiger.sleep();System.out.println("Tiger:奔跑"); tiger.tigerRu

8、n();第 6 章 繼承6.1.2子類對(duì)象的構(gòu)建在上一章中已經(jīng)學(xué)習(xí)了如何創(chuàng)建類的對(duì)象。繼承也是對(duì)類進(jìn)行操作。既然繼承可以這么方便的使用,子類對(duì)象的創(chuàng)建過程是怎么樣的呢?調(diào)用默認(rèn)構(gòu)造函數(shù)。示例如下。是從最頂層的基類開始往下一層層的程序的運(yùn)行結(jié)果如下。在定義了 3 個(gè)類A、B、C,其中 B 繼承自 A,C 繼承自B,當(dāng)創(chuàng)建一個(gè) C 類的對(duì)象時(shí)候,會(huì)自動(dòng)調(diào)用父類的無參構(gòu)造函數(shù)。如果想調(diào)用父類的有參構(gòu)造函數(shù),需要使用 super關(guān)鍵字,調(diào)用父類的構(gòu)造函數(shù)的語句要放在所在的第一個(gè)語句中。修改上面的程序如下。 103 yclass A A()/A 類的無參構(gòu)造器System.out.println(&qu

9、ot;調(diào)用 A 的構(gòu)造函數(shù)");A(int i) /A 類的有參構(gòu)造器System.out.println("調(diào)用 A 的有參構(gòu)造函數(shù)");class B extends A /讓 B 類繼承A 類B() /B 類的無參構(gòu)造器System.out.println("調(diào)用 B 的構(gòu)造函數(shù)");調(diào)用A 的構(gòu)造函數(shù)調(diào)用B 的構(gòu)造函數(shù)調(diào)用C 的構(gòu)造函數(shù)class A A() System.out.println("調(diào)用 A 的構(gòu)造函數(shù)");/類B 繼承Aclass B extends A B() System.out.println

10、("調(diào)用 B 的構(gòu)造函數(shù)");/C 繼承Bclass C extends B C() System.out.println("調(diào)用 C 的構(gòu)造函數(shù)");/通過該類演示對(duì)象的構(gòu)造過程public class CallConstructor public static void main(String args) C c = new C();Java 從入門到精通給每個(gè)類都加上有參數(shù)的構(gòu)造函數(shù),在有參數(shù)的構(gòu)造函數(shù)中,通過 super 關(guān)鍵字調(diào)用其父類構(gòu)造函數(shù)。在 CallConstructor 中構(gòu)建兩個(gè)不同的對(duì)象,通過程序的輸出可以看出這兩個(gè)對(duì)象的構(gòu)建過程

11、。程序的執(zhí)行結(jié)果如下。在 C+中,一個(gè)類是可以有多個(gè)父類的,這樣會(huì)使語言變的非常復(fù)雜,而且多重繼承不是必須的。Java 改進(jìn)了C+的這一點(diǎn),不支持多繼承,一個(gè)類的直接父類只能有一個(gè)。的覆寫Java學(xué)習(xí)3671706.1.3覆寫(overload)與的重載非常相似,它在 Java 的繼承中也有很重要的應(yīng)用。寫程序可能會(huì)碰到下面的情況,在父類中已經(jīng)實(shí)現(xiàn)的可能不夠精確,不能滿足子類的需求。例如在前面的Animal 類中,breath就過于簡單,對(duì)于魚類動(dòng)物是用腮呼吸的,而對(duì)于哺乳動(dòng)物則是用肺呼吸的,如何實(shí)現(xiàn)呢,Java 提供的覆寫就是解決這方面的問題。在下面的首先定義了一個(gè)父類 Animal,然后定

12、義 Animal 的 3 個(gè)子類 Tiger、Fish和 Dog,在父類中提供了 3 個(gè)eat、breath、sleep,在兩個(gè)子類 Tiger 和 Fish 中重新定義了 breath,在 Dog 類中什么都沒做。在 OverloadDemo 中,創(chuàng)建了一個(gè) Fish 對(duì)象、一個(gè)Tiger 對(duì)象和一個(gè) Dog 對(duì)象,分別調(diào)用 breath。 104 yclass Animal String type;/種類調(diào)用A 的構(gòu)造函數(shù)調(diào)用B 的構(gòu)造函數(shù)調(diào)用C 的構(gòu)造函數(shù)調(diào)用A 的有參構(gòu)造函數(shù)調(diào)用B 的有參構(gòu)造函數(shù)調(diào)用C 的有參構(gòu)造函數(shù)B(int i)/B 類的有參構(gòu)造器super(5);/調(diào)用父類的有

13、參構(gòu)造器System.out.println("調(diào)用 B 的有參構(gòu)造函數(shù)");class C extends B /讓 C 類繼承B 類C() /C 類無參構(gòu)造器System.out.println("調(diào)用 C 的構(gòu)造函數(shù)");C(int i)/C 類的有參構(gòu)造器super(5);/調(diào)用父類也就是 B 類的有慘構(gòu)造器System.out.println("調(diào)用 C 的有參構(gòu)造函數(shù)");public class CallConstructor2 public static void main(String args) C c = new

14、 C();/創(chuàng)建C 類對(duì)象C c0=new C(5);/創(chuàng)建C 類的具有參數(shù)對(duì)象第 6 章繼承程序的運(yùn)行結(jié)果如下。 105 y是用肺呼吸的String name;/名稱int age;/int weight;/體重void eat() /吃飯System.out.println("動(dòng)物愛吃飯");void breath() /呼吸System.out.println("動(dòng)物呼吸");void sleep() /睡覺System.out.println("動(dòng)物在睡覺");/Tiger 類繼承 Animal 類class Tiger ex

15、tends Animal String tigerType;/種類String from;/定義獨(dú)有變量/Tiger的void tigerRun() 的奔跑System.out.println("在奔跑");void breath()/繼承來的呼吸System.out.println("是用肺呼吸的");/Fish 繼承 Animal 類class Fish extends Animal String fishType;/Fish的void swim()System.out.println("魚在游泳");void breath()S

16、ystem.out.println("魚是用腮呼吸的");class Dog extends Animalpublic class OverloadDemopublic static void main(String args) 三個(gè)不同的對(duì)象Tiger tiger=new Tiger(); Fish fish=new Fish(); Dog dog=new Dog();/都調(diào)用 breath tiger.breath(); fish.breath(); dog.breath();Java 從入門到精通被覆寫后如果又需要調(diào)用,可以使用 super 關(guān)鍵字來實(shí)現(xiàn),示例如下。在

17、 Animal 的子類 Tiger 中,在 breath。程序的運(yùn)行結(jié)果如下。中,使用語句 super.breath();調(diào)用父類的 breathsuper 關(guān)鍵字主要有以下兩個(gè)用途。在子類構(gòu)造函數(shù)中調(diào)用父類構(gòu)造函數(shù)。在子類中調(diào)用父類的。6.1.4多態(tài)與動(dòng)態(tài)綁定多態(tài)是面向?qū)ο笳Z言的又一重要特性。多態(tài)是指同一個(gè)根據(jù)上下文使用不同的定義的能力。從這一點(diǎn)看講的覆寫以及前面的重載都可被看做是多態(tài)。但是 Java的多態(tài)的是跟動(dòng)態(tài)綁定放在一起理解的。動(dòng)態(tài)綁定是一種機(jī)制,通過這種機(jī)制,對(duì)一個(gè)已經(jīng)被重寫的的調(diào)用將會(huì)發(fā)生在運(yùn)行時(shí),而不是在編譯時(shí)。下面的程序演示了動(dòng)態(tài)綁定,定義父類 Animal 和子類 Tige

18、r 以及 106 y動(dòng)物呼吸是用肺呼吸的class Animal String type; String name; int age;int weight; void eat() System.out.println("動(dòng)物愛吃飯");void breath() System.out.println("動(dòng)物呼吸");class Tiger extends Animal String tigerType; String from;void breath()/通過 super 關(guān)鍵字調(diào)用父類的 breathsuper.breath();/調(diào)用動(dòng)物類的呼吸Sy

19、stem.out.println("是用肺呼吸的");public class SuperDemopublic static void main(String args ) Tiger tiger=new Tiger(); tiger.breath();魚是用腮呼吸的動(dòng)物呼吸第 6 章繼承Fish 如下。演示程序如下。程序定義一個(gè)存放 Animal 對(duì)象的數(shù)組,animal 數(shù)組的 3 個(gè)元素分別存放一個(gè) Animal 對(duì)象、一個(gè) Tiger 對(duì)象、一個(gè) Fish 對(duì)象,然后對(duì)這 3 個(gè)對(duì)象調(diào)用 breath如下。程序的執(zhí)行結(jié)果 107 ypublic class Dyna

20、micMethodDemopublic static void main(String args )Animal animal=new Animal3;/創(chuàng)建不同的對(duì)象,但是都存入Animal 的中animal0=new Animal(); animal1=new Tiger(); animal2=new Fish(); animal0.breath();animal1.breath();animal2.breath();class Animal String type; String name; int age;int weight; void eat() System.out.printl

21、n("動(dòng)物愛吃飯");void breath() System.out.println("動(dòng)物呼吸");void sleep() System.out.println("動(dòng)物在睡覺");class Tiger extends Animal String tigerType; String from;void tigerRun() System.out.println("在奔跑");void breath()System.out.println("是用肺呼吸的");class Fish exten

22、ds Animal String fishType;void swim()System.out.println("魚在游泳");void breath()System.out.println("魚是用腮呼吸的");Java 從入門到精通在 Java 中,對(duì)象是多態(tài)的,定義一個(gè) Animal 對(duì)象,它既可以存放 Animal 對(duì)象,也可以存放 Animal 的子類 Tiger、Fish 的對(duì)象。存放在 Animal 數(shù)組中的 Tiger 對(duì)象和 Fish 對(duì)象在執(zhí)行breath時(shí)會(huì)自動(dòng)地調(diào)用原來對(duì)象的而不是 Animal 的 breath,這就是動(dòng)態(tài)綁定。

23、需要注意一點(diǎn)的是,通過數(shù)組元素的時(shí)候只能在 Animal 中定義的,對(duì)于 Tiger 類和 Fish 中定義的時(shí)卻不能調(diào)用,例如語句 animal2.swim();就是不正確的。當(dāng)需要這些時(shí)需要用到類型轉(zhuǎn)換,演示程序如下。主要看 move,move首先animal 對(duì)象是哪個(gè)類的對(duì)象,由執(zhí)行不同的。在過程使用了 instanceof 運(yùn)算符,它是用來對(duì)象類型的一個(gè)運(yùn)算符。當(dāng)出它的類型之后,再對(duì)其進(jìn)行類型轉(zhuǎn)換,得到原始類型后就可以調(diào)用它的類所特有的程序的運(yùn)行結(jié)果如下。了。6.1.5final 關(guān)鍵字編寫程序時(shí)可能需要把類定義為不能繼承的,即最終類,或者是有的不希望被子類繼承,這時(shí)候就需要使用 f

24、inal 關(guān)鍵字來。把類或很簡單,在類前面加上 final 關(guān)鍵字即可。為 final 類或 final的 108 yfinal class 類名 extends 父類/類體動(dòng)物在睡覺在奔跑魚在游泳public class DynamicMethodDemo2 public static void main(String args )Animal animal=new Animal3; animal0=new Animal(); animal1=new Tiger(); animal2=new Fish();DynamicMethodDemo2 dm=new DynamicMethodDemo

25、2(); dm.move(animal0);dm.move(animal1);dm.move(animal2);void move(Animal animal)/進(jìn)行對(duì)象類型的 if(animal instanceof Tiger)(Tiger)animal).tigerRun(); else if(animal instanceof Fish) (Fish)animal).swim();else animal.sleep();動(dòng)物呼吸是用肺呼吸的魚是用腮呼吸的第 6 章 繼承也可以被為 final 的,形式如下。例如:需要注意的是,實(shí)例變量也可以被定義為 final,被定義為 final 的

26、變量不能被修改。被聲明為 final 的類的自動(dòng)地被為 final,但是它的實(shí)例變量并不是 final。6.2抽象類抽象類是指在類中定義,但是并不去實(shí)現(xiàn)它,而在它的子類中去具體的實(shí)現(xiàn)。定義的抽象不過是一個(gè)占位符。繼承抽象類的子類必須實(shí)現(xiàn)父類的抽象,除非子類也被定義成一個(gè)抽象類。6.2.1抽象類的定義Java學(xué)習(xí)367170對(duì)抽象類有了基本了解后,就來看一下如何定義抽象類。定義抽象類是通過 abstract 關(guān)鍵字實(shí)現(xiàn)的。抽象類的一般形式如下。抽象的定義形式如下。注意:在抽象類中的這里利用抽象類的不一定是抽象,但是含有抽象的類必須被定義成抽象類。對(duì)前面的 Animal、Tiger、Fish 類重

27、新定義。 109 y/抽象類的abstract class Animal String type; String name;int age; int weight;void eat() System.out.println("動(dòng)物愛吃飯");abstract void breath(); void sleep() System.out.println("動(dòng)物在睡覺");修飾符 abstract 返回值類型名();修飾符 abstract 類名/類體public final void run()/體修飾符 final 返回值類型名()/體Java 從入門到

28、精通程序把 Animal 定義為抽象類,里面的 breath被定義為抽象,而后面定義的Animal 的子類 Tiger 和 Fish 都實(shí)現(xiàn)了breath。6.2.2抽象類的使用定義完抽象類后,就可以使用它。但是抽象類和普通類不同,抽象類不可以實(shí)例化,如語句 Animal animal =new Animal();是無法通過編譯的,但是可以創(chuàng)建抽象類的對(duì)象變量,只是這個(gè)變量只能用來指向它的非抽象子類對(duì)象。示例如下。定義了兩個(gè) Animal 對(duì)象變量,一個(gè)存放 Fish 對(duì)象,另一個(gè)存放 Tiger 對(duì)象,分別調(diào)用這兩個(gè)對(duì)象的breath。由于根本不可能構(gòu)建出 Animal 對(duì)象,所以存放的對(duì)象

29、仍然是Tiger 對(duì)象,它會(huì)動(dòng)態(tài)綁定正確的進(jìn)行調(diào)用。需要注意的是,盡管 animal 存放的是 Tiger 對(duì)象或是 Fish 對(duì)象,但是不能直接調(diào)用這些子類的,語句 animal.swim;和 animal2.tigerRun();都是不正確的。調(diào)用這項(xiàng)的時(shí)候仍然需要進(jìn)行類型轉(zhuǎn)換,正確的使用如下。 110 y(Fish) animal1).swim(); (Tiger) animal2).tigerRun();public class UseAbstractpublic static void main(String args)Animal animal1=new Fish(); anima

30、l1.breath();Animal animal2=new Tiger(); animal2.breath();/Tiger 繼承抽象類 Animal class Tiger extends Animal String tigerType; String from;void tigerRun() System.out.println("在奔跑");void breath() System.out.println("是用肺呼吸的");class Fish extends Animal String fishType;void swim() System.

31、out.println("魚在游泳");void breath() System.out.println("魚是用腮呼吸的");第 6 章 繼承6.3Object 類Java 中一個(gè)非常特殊的類Object 類,它是所有類的祖先類。在 Java 中如果定義了一個(gè)類并沒有繼承任何類,那么它默認(rèn)繼承 Object 類。而如果它繼承了一個(gè)類,則它的父類,甚至父類的父類必然是繼承自 Object 類,所以說任何類都是 Object 類的子類。6.3.1Object 對(duì)象由于 Object 類的特殊性,所以在實(shí)際開發(fā)中,經(jīng)常會(huì)使用到它。中就來簡單地介紹一下如何使用

32、 Object 類和如何使用類中的兩個(gè)重要。定義一個(gè) Object 對(duì)象,根據(jù)前面繼承的知識(shí),它可以存放任何類型,示例如下。示例中用到的 Animal 類、Fish 類和 Tiger 類一節(jié)中定義過了??梢园?3 個(gè)不同的對(duì)象放進(jìn) Object 數(shù)組中,但是放進(jìn)去后對(duì)象的類型被丟棄了,取出后要進(jìn)行類型轉(zhuǎn)換。當(dāng)然類型轉(zhuǎn)換不像這么簡單,可能要使用到類型,即用 instanceof 運(yùn)算符實(shí)現(xiàn)。6.3.2equals和 toString在 Object 類中也定義了一系列的,讀者可以閱讀 API。在 Object 類中equals查看。其中比較重要的兩的定義形式如下。個(gè)就是 equals()和 to

33、String()當(dāng)且僅當(dāng)兩個(gè)對(duì)象指向同一個(gè)對(duì)象的時(shí)候才會(huì)返回真值。程序要想進(jìn)行詳細(xì)的,必須進(jìn)行 equals的覆寫。在前面的內(nèi)容中,了 String 類 equals的實(shí)現(xiàn)。 public boolean equals(Object anObject) 111 ypublic boolean equals(Object obj) return (this = obj);public class Testpublic static void main(String args)/創(chuàng)建一個(gè)存放 Object 數(shù)據(jù)的數(shù)組Object object=new Object3; Animal animal1

34、 = new Fish(); Animal animal2 = new Tiger();/將上邊創(chuàng)建的對(duì)象存數(shù) Object 數(shù)組object0=animal1; object1=animal2;object2=new String("String");/取出對(duì)象后需要進(jìn)行類型轉(zhuǎn)換才能調(diào)用相應(yīng)類型的(Fish) object0).swim();Java 從入門到精通兩個(gè)對(duì)象是否指向同一個(gè)對(duì)象,如果是的話當(dāng)然返回 true,如果不是繼續(xù)程序首先提供的對(duì)象是否是 String 類型,如果不是的話返回 false,是的話再進(jìn)一步;取出兩個(gè) String 類的每一個(gè)位置的字符進(jìn)行,

35、如果有一個(gè)不等則返回 false。其實(shí)這是 equals,這里模仿 String 的 equals的實(shí)現(xiàn)提供一個(gè) Animal 的 equals,其實(shí)這是一種比較標(biāo)準(zhǔn)的 equals編寫方式。編寫測試類如下。 112 ypublic class Testequals public static void main(String args) 三個(gè)對(duì)象Animal animal1 = new Fish(); Animal animal2 = new Tiger(); Animal animal3=new Fish();/對(duì)對(duì)象屬性賦值animal1.age=12; =&qu

36、ot;dingding" animal1.type="dog" animal1.weight=12; animal2.age=12;public boolean equals(Object ob) boolean bool = false;if (this = ob)bool= true; if (ob = null)bool= false;if (ob instanceof Animal) bool= (Animal) ob).age = this.age&& (Animal) ob).name = && (A

37、nimal) ob).type = this.type&& (Animal) ob).weight = this.weight;return bool;if (this = anObject) return true;if (anObject instanceof String) String anotherString = (String)anObject; int n = count;if (n = anotherString.count) char v1 = value;char v2 = anotherString.value; int i = offset;int j = anotherString.offset; while (n- != 0) if (v1i+ != v2j+) return false;return true;return false;第 6 章 繼承程序的執(zhí)行結(jié)果如下。測試。其實(shí) Java 的源代碼都是經(jīng)過仔細(xì)斟酌的,讀者有時(shí)間可以多學(xué)習(xí)一下 Java源碼。對(duì)于toStrin

溫馨提示

  • 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)論