




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第六章 Java的繼承 繼承的概念 繼承的實(shí)現(xiàn) 變量隱藏與方法覆蓋 super關(guān)鍵字 子類的構(gòu)造順序 final關(guān)鍵字 1回顧:為什么要使用封裝 下面代碼有什么問題?如何解決上面設(shè)計(jì)的缺陷?Dog d = new Dog();d.age = 1000; 不合理的賦值不合理的賦值 使用使用封裝封裝 回顧:什么是封裝面向?qū)ο笕筇卣髦环庋b封裝的概念封裝的好處封裝:將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪封裝:將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實(shí)現(xiàn)對隱藏信息的操作和訪問問,而是通過該類提供的方法來實(shí)現(xiàn)對隱藏信息的操作和訪問 隱藏類的隱藏類的實(shí)現(xiàn)細(xì)節(jié)
2、實(shí)現(xiàn)細(xì)節(jié)只能通過規(guī)只能通過規(guī)定方法訪問定方法訪問數(shù)據(jù)數(shù)據(jù)方便加入控方便加入控制語句制語句方便修改實(shí)現(xiàn)方便修改實(shí)現(xiàn)回顧及提問構(gòu)造方法的語法要求是什么?static和final的含義是什么?請畫出下面Dog類的類圖?;仡櫍侯悎D使用類圖描述類用于分析和設(shè)計(jì)“類”直觀、容易理解- name:String- health:int- love:int+ strain:StringDog+ print( ) : void“+”:public“-”:private“#”:protected類名類名返回值返回值類型類型類型類型屬性名屬性名參數(shù):參數(shù):名字名字:類型類型,名字名字: :類型類型方法名方法名為什么使
3、用繼承 ?這兩個(gè)類圖有什么問題?- name:String- health:int- love:int- strain:StringDog+ print():void+ getName():String+ getHealth ():int+ getLove():int+ getStrain:String+ Dog()- name:String- health:int- love:int- sex:StringPenguin+ print():void+ getName():String+ getHealth ():int+ getLove():int+ getSex():String+ Pen
4、guin() 使用繼承優(yōu)化設(shè)計(jì) 將重復(fù)代碼抽取到父類中為什么使用繼承 ?使用繼承優(yōu)化后: 子類與父類是is-a關(guān)系,即小類是大類中的一種是繼承的基礎(chǔ)減少代碼量 方便修改代碼 現(xiàn)欲定義人(Person)類和學(xué)生(Student)類,擬設(shè)立如下的屬性、方法:8Person-name : String -age : int-sex : String+ setName(String) : void+ getName() : String+ setAge(int) : void+ getAge() : int+ setSex(String) : void+ getSex() : String+ toSt
5、ring() : StringStudent-name : String -age : int-sex : String-school : String /新增,下同新增,下同+ setName(String) : void+ getName() : String+ setAge(int) : void+ getAge() : int+ setSex(String) : void+ getSex() : String+ toString() : String /功能要增強(qiáng)功能要增強(qiáng)+ setSchool(String) : void+ getSchool() : String問題:Studen
6、t類的很多屬性、方法與Person類相同,新增的部分較少。在已聲明Person類的情況下,定義Student類時(shí)是否需要將是否需要將其所有屬性、方法寫一次?有無簡便方法可用?其所有屬性、方法寫一次?有無簡便方法可用?回答是肯定的,我們可以讓Student類繼承繼承Person類。這樣,Student類就可以利用Person已有屬性、方法,定義時(shí)只要增加新的屬性與方法即可。9Person-name : String -age : int-sex : String+ setName(String) : void+ getName() : String+ setAge(int) : void+ ge
7、tAge() : int+ setSex(String) : void+ getSex() : String+ toString() : StringStudent-school : String /新增,下同新增,下同+ toString() : String /功能要增強(qiáng)功能要增強(qiáng)+ setSchool(String) : void+ getSchool() : String從上可知,引入“繼承”機(jī)制后,可以充分利用已有的充分利用已有的“舊類舊類”的屬性、方法,簡化的屬性、方法,簡化“新類新類”的設(shè)計(jì)的設(shè)計(jì)。繼承繼承繼承的概念:概念:是指在已存在的類的基礎(chǔ)上擴(kuò)展產(chǎn)生新的類。 已存在的類稱為
8、父類(或基類、超類),新產(chǎn)生的類稱為子類(或派生類)。上面提到的Person類就是父類,Student類是子類。 子類繼承了父類,它擁有父類的所有特性(除構(gòu)造方法不被繼承外),當(dāng)然也可以向子類添加新的屬性、方法,或改寫父類原有方法,這些新變化的內(nèi)容僅僅屬于子類所有。意義:繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)最重要的特征之一,是實(shí)現(xiàn)代碼重用、擴(kuò)展軟件功能的重要手段。父類:更一般、更泛化 子類:更具體、更細(xì)化10類的層次性:下面以Java類庫中的一些類繼承關(guān)系說明如下:11繼承關(guān)系繼承關(guān)系一個(gè)類的子類可以是另一個(gè)類的一個(gè)類的子類可以是另一個(gè)類的父類,由繼承關(guān)系可以形成類的層次性。父類,由繼承關(guān)系可以形成類的層次
9、性。繼承的實(shí)現(xiàn)繼承的實(shí)現(xiàn)類的繼承格式類的繼承格式:12class 子類名子類名 extends 父類名父類名/新增屬性、方法,或改寫父類原有方法新增屬性、方法,或改寫父類原有方法例如:class B extends A 又如:class Student extends Person 父類父類(或基類、超類或基類、超類)子類子類(或派生類或派生類)說明:如果沒有用extends指明父類,則默認(rèn)繼承Object根類,Object類是所有類的直接父類或間接父類,有關(guān)Object類的內(nèi)容稍后介紹;Java只支持單一繼承,不允許多重繼承,即:u一個(gè)子類只能有一個(gè)父類一個(gè)子類只能有一個(gè)父類u一個(gè)父類可以派
10、生出多個(gè)子類一個(gè)父類可以派生出多個(gè)子類13PersonStudentSoldierOfficerGraduate采用繼承機(jī)制后,簡化了類的設(shè)計(jì):只要寫子類中不同父類只要寫子類中不同父類的內(nèi)容的內(nèi)容(即即新增屬性、方法,或改寫父類原有方法新增屬性、方法,或改寫父類原有方法)14/B類繼承類繼承A類類class A/父父類類int x=10;public void setX(int x)this.x=x;public int getX()return x;public String toString()String information=;information=information+x= +
11、x+n;return information;15class B extends A/子類繼承子類繼承父類父類int y=100;/子類新增屬性子類新增屬性public void setY(int y)/子類新增方法子類新增方法this.y=y;public int getY()/子類新增方法子類新增方法return y;public String toString()/子類改寫子類改寫父類父類方法方法String information=;information=information+x= +x+n;information=information+y= +y+n;return inform
12、ation;public class InheritTest public static void main(String args) A a=new A();B b=new B();System.out.println(a.toString();System.out.println(b.toString();程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:x= 10 x= 10y= 100變量隱藏與方法覆蓋變量隱藏與方法覆蓋通過前面的介紹,我們已經(jīng)知道:子類繼承了父類的所有成員(變量和方法,除構(gòu)造方法外)(注意:由于訪問權(quán)限的限制,并不意味著父類的所有變量、方法都可以在子類中直接使用);子類還可以根據(jù)需要,增加
13、自己的變量和方法;除此之外,我們還可以對父類已有變量、方法進(jìn)行隱藏、覆蓋。Java允許在子類定義與父類同名(類型可以不同)的變量,在子類中直接使用這一變量名時(shí),訪問的是子類定義的變量,而父類同名的變量則被隱藏起來,這稱為變量的隱藏。16Java還允許在子類中對父類原有的方法進(jìn)行重寫,以實(shí)現(xiàn)新的功能。所謂方法覆蓋,是指在子類中重新定義一個(gè)方法的內(nèi)容,該方法與父類的某一方法在方法名、參數(shù)在方法名、參數(shù)(包括類包括類型、個(gè)數(shù)、次序型、個(gè)數(shù)、次序)、返回值類型、返回值類型 完全相同。當(dāng)子類對象中調(diào)用這一方法時(shí),調(diào)用的是子類改寫過的方法,而父類中的原有方法被覆蓋。 17方法重寫必須滿足如下要求:重寫方法
14、和被重寫方法必須具有相同的方法名;重寫方法和被重寫方法必須具有相同的參數(shù)列表;重寫方法的返回值類型必須和被重寫方法的返回值類型相同或者是其子類;重寫方法的不能縮小被重寫方法的訪問權(quán)限。子類方法不能拋出比父類方法更多的異常。例如:在前面的B類中已改寫了toString( )方法的內(nèi)容(即方法覆蓋),使之能夠輸出y的值?,F(xiàn)在,在B類中再增加一個(gè)double型的變量x,這樣父類中的整型變量x就被隱藏,在toString()訪問的是子類的值。主要代碼如下:1819public class Circle extends Point public int x, y ,radius; public Stri
15、ng toString() public String toString(int x, int y, int radius) public class Pointpublic int x, y;public String toString()變量的隱藏變量的隱藏方法的覆蓋方法的覆蓋方法的重載方法的重載下面的例子演示了變量隱藏與方法覆蓋的使用方式。下面的例子演示了變量隱藏與方法覆蓋的使用方式。20/B類繼承類繼承A類類class A/父父類類int x=10; /被隱藏的變量被隱藏的變量public void setX(int x)this.x=x;public int getX()return
16、 x;public String toString() /被覆蓋的方法被覆蓋的方法String information=;information=information+x= +x+n;return information;21/父類代碼與前面相同,這里省略不寫父類代碼與前面相同,這里省略不寫class B extends A/子類繼承子類繼承父類父類double x=-12.345/變量變量隱藏隱藏int y=100;/子類新增屬性子類新增屬性public void setY(int y)/子類新增方法子類新增方法this.y=y;public int getY()/子類新增方法子類新增方法
17、return y;public String toString()/子類改寫子類改寫父類父類方法方法,即方法覆蓋即方法覆蓋String information=;information=information+x= +x+n;information=information+y= +y+n;return information;public class InheritTest public static void main(String args) A a=new A();B b=new B();System.out.println(a.toString();System.out.println
18、(b.toString();程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:x= 10 x= -12.345y= 100變量變量隱藏容易引用變量的使用混亂,隱藏容易引用變量的使用混亂,不贊成使用,不贊成使用,而方法覆蓋則是大量使而方法覆蓋則是大量使用用,應(yīng)掌握其內(nèi)容應(yīng)掌握其內(nèi)容。(問題:方法覆蓋與問題:方法覆蓋與方法重載區(qū)別是什么?方法重載區(qū)別是什么?)方法覆蓋與方法重載的異同相同點(diǎn):都要求方法同名都可以于于抽象方法和非抽象方法之間不同點(diǎn):方法覆蓋要求參數(shù)簽名必須一致,而方法重載要求參數(shù)簽名必須不一致。方法覆蓋要求返回類型必須一致,而方法重載不做限制。方法覆蓋只能用于子類覆蓋父類的方法,方法重載用于同一個(gè)類的所有
19、方法(包括從父類中繼承而來的方法)。方法覆蓋對方法的訪問權(quán)限和拋出的異常有特殊的要求,而方法重載沒有限制。父類的一個(gè)方法只能被子類覆蓋一次,而一個(gè)方法所在的類中可以被多次重載22super關(guān)鍵字關(guān)鍵字如果要訪問父類的隱藏變量、覆蓋方法(需要有相應(yīng)的訪問權(quán)限),這該怎樣辦呢?答案是使用super關(guān)鍵字,下面介紹該關(guān)鍵字的用法:Super 可用來引用父類的成分,它有兩種主要用法:引用父類的成員(需要相應(yīng)的訪問權(quán)限):super.變量 或super.方法(參數(shù)列)在子類構(gòu)造方法中調(diào)用父類的構(gòu)造方法:super();/與this用法類似,應(yīng)放在構(gòu)造方法的第一行位置上。還是以前面的B類繼承A類為例說明如
20、下:23子類的構(gòu)造順序子類的構(gòu)造順序下面通過一個(gè)例子來說明子類的構(gòu)造順序:24class Apublic A()System.out.println(調(diào)用了調(diào)用了A類的構(gòu)造方法類的構(gòu)造方法);class B extends Apublic B()System.out.println(調(diào)用了調(diào)用了B類的構(gòu)造方法類的構(gòu)造方法);public class C extends B public C()System.out.println(調(diào)用了調(diào)用了C類的構(gòu)造方法類的構(gòu)造方法);public static void main(String args) C c=new C();程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果
21、:調(diào)用了調(diào)用了A類的構(gòu)造方法類的構(gòu)造方法調(diào)用了調(diào)用了B類的構(gòu)造方法類的構(gòu)造方法調(diào)用了調(diào)用了C類的構(gòu)造方法類的構(gòu)造方法從上可以看出:在構(gòu)造子從上可以看出:在構(gòu)造子類的對象時(shí),類的對象時(shí),編譯器會一編譯器會一直上溯到最初類,執(zhí)行該直上溯到最初類,執(zhí)行該類構(gòu)造方法,然后依次執(zhí)類構(gòu)造方法,然后依次執(zhí)行各子類構(gòu)造函數(shù)行各子類構(gòu)造函數(shù),即即以以:A-B-C 順序來初始順序來初始化子對象各部分?;訉ο蟾鞑糠帧W宇惖臉?gòu)造方法:作用:用來完成對該類中的所有變量(即屬性)進(jìn)行初始化,子類中的變量包含從父類繼承下來的變量和自己新增加的變量;分工:各類只負(fù)責(zé)在該中新增變量的初始化工作,職責(zé)分明,不可助“類”為樂”,
22、也即說:父類構(gòu)造方法負(fù)責(zé)父類中增加變量的初紿化工作,子類構(gòu)造方法負(fù)責(zé)子類中新增變量的初紿化工作;25父類變量的初始化工作父類變量的初始化工作子類新增變量的初始化工作子類新增變量的初始化工作父類的構(gòu)造父類的構(gòu)造方法方法子類的構(gòu)造子類的構(gòu)造方法方法內(nèi)容:在子類的構(gòu)造方法中可以用super關(guān)鍵字來調(diào)用父類的構(gòu)造方法,格式如下:26如果在子類中未顯式調(diào)用父類構(gòu)造方法未顯式調(diào)用父類構(gòu)造方法,則編譯器會自動(dòng)調(diào)用父類的默認(rèn)構(gòu)造方法默認(rèn)構(gòu)造方法,假若父類沒有提供默認(rèn)構(gòu)造方法,編譯時(shí)將出錯(cuò)。子類構(gòu)造方法子類構(gòu)造方法(參數(shù)表參數(shù)表)super(super(父類構(gòu)造方法參數(shù)父類構(gòu)造方法參數(shù)); ); /調(diào)用父類構(gòu)造
23、方法調(diào)用父類構(gòu)造方法其它;其它;/對本類新增變量進(jìn)行初始化或進(jìn)行其它處理對本類新增變量進(jìn)行初始化或進(jìn)行其它處理 n執(zhí)行順序:先執(zhí)行父類構(gòu)造方法,再執(zhí)行子類構(gòu)造方法。在多層繼承層時(shí),編譯器會一直上溯到最初類,再從“上”到“下”依次執(zhí)行。n教師演示:constructortest.java繼承條件下構(gòu)造方法的調(diào)用規(guī)則如下:如果子類的構(gòu)造方法中沒有通過super顯式調(diào)用父類的有參構(gòu)造方法,也沒有通過this顯式調(diào)用自身的其他構(gòu)造方法,則系統(tǒng)會默認(rèn)先調(diào)用父類的無參構(gòu)造方法。在這種情況下,寫不寫“super();”語句,效果是一樣的。如果子類的構(gòu)造方法中通過super顯式調(diào)用父類的有參構(gòu)造方法,那將執(zhí)行
24、父類相應(yīng)構(gòu)造方法,而不執(zhí)行父類無參構(gòu)造方法。如果子類的構(gòu)造方法中通過this顯式調(diào)用自身的其他構(gòu)造方法,在相應(yīng)構(gòu)造方法中應(yīng)用以上兩條規(guī)則。特別注意的是,如果存在多級繼承關(guān)系,在創(chuàng)建一個(gè)子類對象時(shí),以上規(guī)則會多次向更高一級父類應(yīng)用,一直到執(zhí)行頂級父類Object類的無參構(gòu)造方法為止。27訪問權(quán)限通過繼承,子類能夠獲得父類中除構(gòu)造方法以外的所有變量和方法,但并不意味著子類可以調(diào)用父類的這些變量、方法,這要受到訪問權(quán)限的限制。28/private權(quán)限類權(quán)限類class Person private String name=;/私有訪問權(quán)限私有訪問權(quán)限private int age=0;public
25、Person(String name, int age)=name;this.age=age;public String getName()return name;29public int getAge()return age;class Student extends Personpublic Student(String name, int age)super(name, age);public String toString()String str=;str=str+姓名:姓名:+name;str=str+, 年齡:年齡:+age;return str; public
26、class PrivateTest public static void main(String args)Student wang=new Student(王小麗王小麗, 20);System.out.println(wang.toString();22: name 可以在 Person 中訪問 private str=str+姓名:+name; F:java I_2006ppt15codeprivate權(quán)限PrivateTest.java:23: age 可以在 Person 中訪問 private str=str+, 年齡:+age; 2 錯(cuò)誤這是因?yàn)檫@是因?yàn)閚ame、age兩兩個(gè)變量是
27、個(gè)變量是private權(quán)限,不允權(quán)限,不允許子類直接訪問許子類直接訪問。若調(diào)用。若調(diào)用public權(quán)限權(quán)限的的getName()、getAge(),則問題可以迎刃而,則問題可以迎刃而解。解。訪問權(quán)限Java中控制變量、方法的訪問權(quán)限有四種:public: 公有權(quán)限,這是訪問限制最寬的修飾符,所修飾的成員可被所有類訪問,實(shí)現(xiàn)跨類、跨包訪問目的,類的成員方法一般都設(shè)置為public權(quán)限;private: 私有權(quán)限,這是訪問限制最嚴(yán)的修飾符,所修飾的成員只能在同一類中訪問,不允許被其它任何類(包括子類)訪問,類的成員變量一般都設(shè)置為private權(quán)限;protected:受保護(hù)權(quán)限,這是一種權(quán)限介于
28、public、private之間的修飾符,它允許被同一包中的類和該類的子類(可位于不同包中)訪問,不要誤認(rèn)為這一權(quán)限的保護(hù)就很嚴(yán)格,實(shí)際上,完全可以通過子類來達(dá)到訪問父類成員的目的。較少使用。30Friendly:包權(quán)限 如果不加任何權(quán)限修飾符,就認(rèn)為是包權(quán)限,也稱為默認(rèn)(缺省)或友好權(quán)限,它允許被同一包中的類訪問,不允許被其它包的類訪問。根據(jù)是否在同一類、是否為子類、是否在同一個(gè)包中,可以劃分為五種類型歸納如下:31publicprotectedfriendly默認(rèn)默認(rèn)private同一類同一類中是否可見中是否可見是是是是是是 是是對對同一包中的子類同一包中的子類是否可見是否可見是是是是是是
29、否否對對同一包中的非子類同一包中的非子類是否可見是否可見是是是是是是否否對對不同包中的子類不同包中的子類是否可見是否可見是是是是否否否否對對不同包中的非子類不同包中的非子類是否可見是否可見是是否否否否否否訪問權(quán)限訪問權(quán)限從高到低從高到低排序:排序:publicpublic、protectedprotected、包的、包的( (即即默認(rèn)的默認(rèn)的) )、privateprivate例子:Myclass:父類DerivedSamePackage:同一包中子類UnrelatedSamePackage:同一包中非子類DerivedDifferentPackage:不同包中的子類UnrelatedDiff
30、erentSamePackage:不同包中的非子類MainPack1:使用同一包中的類MainPack2:使用不同包中的類具體代碼見 訪問權(quán)限例子32對象的類型轉(zhuǎn)換對象類型的轉(zhuǎn)換與基本數(shù)據(jù)類型相似,有兩種方式:子類轉(zhuǎn)換成父類:稱為向上轉(zhuǎn)型,即: 父類對象句柄=子類對象這種轉(zhuǎn)換是允許的,且自動(dòng)進(jìn)行。在前面的Person、Student類的基礎(chǔ)上,有:Person man=new Student (“張一山”,14);這容易理解,由于繼承的子類和父類關(guān)系是“is-a”關(guān)系,也即是說,子類是父類中的一種(一個(gè)學(xué)生也是一個(gè)人)。由于Object類是所有類的直接或間接父類,故有:Object 對象名=任
31、何類的對象 3334對象對象新增的變量新增的方法繼承或隱蔽的變量繼承或覆蓋的方法對象的上轉(zhuǎn)型對象的上轉(zhuǎn)型對象對象說明:向上轉(zhuǎn)型對象不能操作子類新的成員變量(失掉一部分屬性),也不能使用子類新增的成員方法(失掉一部分功能)。父類轉(zhuǎn)換成子類: 子類對象句柄=父類對象;/這是錯(cuò)誤的寫法,因?yàn)檫@種轉(zhuǎn)換不會自動(dòng)進(jìn)行,如果一定要將父類轉(zhuǎn)換成子類,那么要強(qiáng)制轉(zhuǎn)換,即:子類對象句柄子類對象句柄= (子類名子類名) 父類對象;父類對象;當(dāng)然這種轉(zhuǎn)換要有意義,不能僅僅是為了騙守編譯器,而實(shí)際讀寫內(nèi)容錯(cuò)誤。例如:Person man=new Student (“張一山”,14);Student st1=man; /錯(cuò)誤Student st2=(Student)man; /正確35final關(guān)鍵字阻止類的繼承阻止方法的重寫創(chuàng)建常量36final關(guān)鍵字的用法 類不希望再被其他類繼承?使用final類方法不希望被重寫?使用final方法屬性值不希望被修改?使用final方法public final class Penguin extends Pet /最終版的類 public final void print () /最終版的方法public c
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 兼職工作合同協(xié)議
- 消防系統(tǒng)檢測合同
- 小數(shù)的意義(教學(xué)設(shè)計(jì))-2023-2024學(xué)年四年級下冊數(shù)學(xué)人教版
- 管理軟件系統(tǒng)購買合同范文格式7篇
- 噸的認(rèn)識(教學(xué)設(shè)計(jì))-2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版
- 雙手胸前傳接球 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高二下學(xué)期體育與健康人教版必修第一冊
- 小學(xué)三年級數(shù)學(xué)幾百幾十加減幾百幾十水平練習(xí)習(xí)題
- 簡易家用活動(dòng)平臺施工方案
- Unit 1 Lesson 3 The Sun Is Rising教學(xué)設(shè)計(jì) -2024-2025學(xué)年冀教版八年級英語下冊
- 第9課 兩宋的政治和軍事 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高一上學(xué)期統(tǒng)編版(2019)必修中外歷史綱要上
- 《中國商貿(mào)文化》3.1古代商人
- 南宋北京大學(xué)歷史學(xué)系課件
- 重慶市房屋建筑與裝飾工程計(jì)價(jià)定額2018-建筑工程
- 三年級數(shù)學(xué)-解決問題策略(蘇教版)
- 不吃路邊攤精品課件
- 《網(wǎng)絡(luò)服務(wù)器搭建、配置與管理-Linux(RHEL8、CentOS8)(微課版)(第4版)》全冊電子教案
- 心理評估與診斷簡介
- 無痛病房管理課件
- 讓孩子變成學(xué)習(xí)的天使——由《第56號教室的奇跡》讀書分享
- 球泡檢驗(yàn)標(biāo)準(zhǔn)
- 振動(dòng)分析基礎(chǔ)講義1
評論
0/150
提交評論