




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C++語言程序設(shè)計(jì)第十一組C++語言程序設(shè)計(jì)第八章繼承C++語言程序設(shè)計(jì)1目錄C++語言程序設(shè)計(jì)2“繼承的概念基類和派生類派生類的構(gòu)造和析構(gòu)多繼承基本知識(shí)在主函數(shù)中增加調(diào)試信息編程技能同名覆蓋與重載轉(zhuǎn)換與繼承刨根問底C++語言程序設(shè)計(jì)3基本知識(shí)a自行車8.1繼承的概念自行車BicycleC++語言程序設(shè)計(jì)4雙人自行車TandemBike8.1繼承的概念C++語言程序設(shè)計(jì)58.1繼承的概念競(jìng)速自行車RacingBikeC++語言程序設(shè)計(jì)68.1繼承的概念山地車MountainBikeC++語言程序設(shè)計(jì)78.1繼承的概念山地車?yán)^承了自行車的特征
自行車“派生”出了山地車C++語言程序設(shè)計(jì)88.1繼承的概念類的繼承是在現(xiàn)有類的基礎(chǔ)之上,創(chuàng)建新類的機(jī)制。稱現(xiàn)有的類為基類(BaseClass),新建立的類為派生類(DerivedClass)。也可以表述為“父類(ParentClass)—子類(ChildClass)”或者“超類(Superclass)—子類(Subclass)”Bike基類TandemBike派生類派生于intWheel;boolRun();intWheel;boolRun();intSeat;父類子類從基類
繼承C++語言程序設(shè)計(jì)98.1繼承的概念“派生”(Derive)可以理解為繼承的另外一種說法。“類D繼承了類B”可以表述為“類B派生出類D”。若類B派生出類D1、D2…,也可以說B是D1、D2…的泛化(Generalization),稱B為D1、D2…的基類,稱D1、D2為B的派生類。如果兩個(gè)類的實(shí)現(xiàn)有某些顯著的共同點(diǎn),則將這些共性做成一個(gè)基類。面向?qū)ο蟪绦蛟O(shè)計(jì)的難點(diǎn)不在于如何寫函數(shù),而在于如何發(fā)現(xiàn)類,規(guī)劃每一個(gè)類所需完成的功能,以及準(zhǔn)確界定各個(gè)類之間的關(guān)系。若派生類只有一個(gè)直接基類,則稱這種繼承方式為單繼承;若派生類有多個(gè)直接基類,則稱為多繼承。C++語言程序設(shè)計(jì)10C++語言程序設(shè)計(jì)118.2定義基類和派生類定義派生類時(shí)要聲明繼承方式,基類的成員被繼承到派生類,訪問控制受繼承方式的影響繼承導(dǎo)致一種特殊的語法現(xiàn)象:同名覆蓋。三種繼承方式public、protected、private不同繼承方式的影響主要體現(xiàn)在:派生類成員對(duì)基類成員的訪問控制派生類對(duì)象對(duì)基類成員的訪問控制8.2定義基類和派生類C++語言程序設(shè)計(jì)12問題:想在屏幕上畫出正三角形、矩形或圓形方法一:結(jié)構(gòu)化方法DrawTri(intx,inty,charcolor,intside);DrawRect(intx,inty,charcolor,intlength,intwidth)DrawCircle(intx,inty,charcolor,intRadius)方法二:面向?qū)ο蠓椒╟lasscircle圓形classrectangle矩形classtriangle三角形基類:classshape色彩color位置(x,y)shapecirclerectangletriangle泛化?//TShape01.h:類TShape的頭文件typedefunsignedintuint;classTShape{private:uint_x,_y;//幾何形狀的位置public:TShape();uintgetX();uintgetY();voidsetX(uintx);voidsetY(uinty);voidDraw();};C++語言程序設(shè)計(jì)138.2定義基類和派生類//TShape01.cpp:類TShape的實(shí)現(xiàn)#include"TShape01.h"#include<iostream>usingnamespacestd;TShape::TShape(){_x=10;_y=10;}voidTShape::Draw(){cout<<"ThisisTShape::Draw()"<<endl;}成員函數(shù)的分類構(gòu)造函數(shù)設(shè)置屬性值讀取屬性值執(zhí)行//TEllipse01.h:類TEllipse的頭文件#include"TShape01.h"classTEllipse:publicTShape{public:voidDraw();};//TEllipse01.cpp:類TEllipse的實(shí)現(xiàn)#include"TEllipse01.h"#include<iostream>usingnamespacestd;voidTEllipse::Draw(){cout<<"Drawanellipsewithcolor"<<endl;}成員函數(shù)的分類構(gòu)造函數(shù)設(shè)置屬性值讀取屬性值執(zhí)行C++語言程序設(shè)計(jì)158.2定義基類和派生類//Main01.cpp#include"TEllipse01.h"#include<iostream>usingnamespacestd;intmain(){TEllipsem_TEllipse;cout<<"X="<<m_TEllipse.getX()<<",Y="<<m_TEllipse.getY()<<endl; //顯示默認(rèn)的x、y值m_TEllipse.setX(11u); //修改x的值//m_TEllipse._y=21u; //錯(cuò)誤!用戶代碼不能通過類的
對(duì)象訪問私有成員m_TEllipse.setY(21u); //修改y的值cout<<"X="<<m_TEllipse.getX()<<",Y="<<m_TEllipse.getY()<<endl; //顯示修改后的x、y值m_TEllipse.Draw();return0;}C++語言程序設(shè)計(jì)168.2定義基類和派生類程序運(yùn)行結(jié)果:
X=10,Y=10
X=11,Y=21
Drawanellipsewithcolor8.2定義基類和派生類派生類定義的語法格式是:class派生類名:
繼承方式基類1,繼承方式基類2,…,繼承方式基類n{派生類成員聲明;};例如:已有基類b1和b2,定義派生類derive,其中包括私有整型成員newInt,公有函數(shù)成員intnewFun(),私有函數(shù)成員intmax(inta,intb);寫出類derive的定義。classderive:publicb1,privateb2{private:
intnewInt;public:
voidnewFun();private:
intmax(inta,intb);};C++語言程序設(shè)計(jì)178.2定義基類和派生類類成員的可見性公共成員:public保護(hù)成員:protected私有成員:private繼承的方式公有繼承(public)保護(hù)繼承(protected)私有繼承(private)派生類繼承了基類中的所有成員,但不包括構(gòu)造函數(shù)析構(gòu)函數(shù)默認(rèn)賦值運(yùn)算符8.2定義基類和派生類C++語言程序設(shè)計(jì)18不同繼承方式?jīng)Q定的不同訪問控制權(quán)限體現(xiàn)在:派生類的成員函數(shù)對(duì)其繼承的基類成員的訪問控制;其它模塊通過派生類對(duì)象對(duì)其繼承的基類成員的訪問控制。private:protected:public:基類???派生類publicprotectedprivate繼承方式?jīng)Q定繼承成員的訪問權(quán)限繼承來的成員的訪問權(quán)限?8.2定義基類和派生類C++語言程序設(shè)計(jì)191.公有繼承公有繼承的派生類定義形式:class派生類名:public基類名{ 派生類新成員定義;};private:protected:public:基類???派生類基類成員
在派生類中的訪問屬性不變。派生類的成員函數(shù)
可以訪問基類的公有成員和保護(hù)成員,不能訪問基類的私有成員;派生類以外的其它函數(shù)
可以通過派生類的對(duì)象,訪問從基類繼承的公有成員,但不能訪問從基類繼承的保護(hù)成員和私有成員。privateprotectedpublic派生類成員函數(shù)可以訪問派生類對(duì)象基類成員的屬性public8.2定義基類和派生類C++語言程序設(shè)計(jì)202.私有繼承私有繼承的派生類定義形式:class派生類名:private基類名{ 派生類新成員定義;};private:protected:public:基類???派生類基類成員
在派生類中的訪問屬性都變成private。派生類的成員函數(shù)
可以訪問基類的公有成員和保護(hù)成員,不能訪問基類的私有成員;派生類以外的其它函數(shù)
不能通過派生類的對(duì)象,訪問從基類繼承的任何成員。privateprivateprivate派生類成員函數(shù)可以訪問基類成員的屬性private派生類對(duì)象8.2定義基類和派生類C++語言程序設(shè)計(jì)21private:protected:public:父類privateprotectedprotected子類protectedprivate:protected:public:父類privateprivateprivate:子類privateprivateprivateprivate:孫類privateprotectedpublic孫類成員函數(shù)無法訪問protectedpublicprivateprotectedprotected孫類孫類成員函數(shù)可以訪問私有繼承和保護(hù)繼承的區(qū)別8.2定義基類和派生類C++語言程序設(shè)計(jì)22public:protected:private:publicpublicprotectedprivateprotectedprotectedprotectedprivateprivateprivateprivateprivate基類存取方式繼承類型派生類繼承的基類成員的訪問屬性繼承方式影響訪問控制8.2定義基類和派生類C++語言程序設(shè)計(jì)23同名覆蓋(Override):派生類修改基類的成員,是在派生類中聲明了一個(gè)與基類成員同名的新成員。在派生類作用域內(nèi)或者在類外通過派生類的對(duì)象直接使用這個(gè)成員名,只能訪問到派生類中聲明的同名新成員,這個(gè)新成員覆蓋了從基類繼承的同名成員,這種情況稱為同名覆蓋。class
base{public:
void
f(){cout<<"base"<<endl;}};class
deriver:public
base{public:
void
f(){cout<<"deriver"<<endl;}};int
main(){
deriver
derobj;
derobj.f();
return0;}輸出結(jié)果?A:
base
B:deriver在派生類中聲明了一個(gè)與基類成員同名的新成員OverRide只能訪問到派生類中的同名新成員在派生類作用域內(nèi)或者在類外通過派生類的對(duì)象直接使用這個(gè)成員名8.3派生類的構(gòu)造和析構(gòu)基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被派生類所繼承;派生類一般需要定義自己的構(gòu)造函數(shù)和析構(gòu)函數(shù);派生類的構(gòu)造及析構(gòu)函數(shù)通常會(huì)受到基類構(gòu)造及析構(gòu)函數(shù)的影響?;愔挥袩o參數(shù)構(gòu)造函數(shù)在基類具有無參構(gòu)造函數(shù),派生類又沒有定義構(gòu)造函數(shù)的時(shí)候,系統(tǒng)會(huì)自動(dòng)調(diào)用基類的無參構(gòu)造函數(shù)來構(gòu)造派生類對(duì)象中的基類成分?;惖臉?gòu)造函數(shù)一般被聲明為public訪問控制方式。若基類提供了一些構(gòu)造函數(shù),并且只希望由派生類使用這些構(gòu)造函數(shù),那么就需要在基類中將這樣的特殊構(gòu)造函數(shù)定義為protected。C++語言程序設(shè)計(jì)248.3派生類的構(gòu)造和析構(gòu)派生類的構(gòu)造函數(shù)派生類的構(gòu)造函數(shù)要初始化本類的數(shù)據(jù)成員,還要調(diào)用基類的構(gòu)造函數(shù),并為基類構(gòu)造函數(shù)傳遞參數(shù),完成派生類中基類成分的初始化。派生類構(gòu)造函數(shù)的形式如下。派生類名::派生類名(基類所需的形參,本類成員所需的形參):
基類1(基類參數(shù)表1),基類2(基類參數(shù)表2),…,基類n(基類參數(shù)表n){
本類基本類型數(shù)據(jù)成員初始化;}C++語言程序設(shè)計(jì)25初始化列表//TShape03.cpp#include"TShape03.h"#include<iostream>TShape::TShape(uintx,uinty){_x=x;_y=y;_RED=0;_GREEN=0;_BLUE=0;}TShape::~TShape(){cout<<"TShapedestructed"<<endl;}voidTShape::Draw(){cout<<"ThisisTShape::Draw()"<<endl;}voidTShape::getXY(uint&x,uint&y){x=_x;y=_y;}voidTShape::getRGB(uchar&R,uchar&G,uchar&B){R=_RED;G=_GREEN;B=_BLUE;}//TShape03.htypedefunsignedintuint;typedefunsignedcharuchar;classTShape{private:uint_x,_y;//幾何形狀的位置protected:/*聲明幾何形狀的顏色。允許TShape的派生類直接訪問這些顏色屬性,而不允許在類外通過類的對(duì)象直接訪問這些屬性
*/uchar_RED,_GREEN,_BLUE;public:TShape(uintx,uinty);voidgetXY(uint&x,uint&y);voidsetXY(uintx,uinty);voidDraw();voidgetRGB(uchar&R,uchar&G,uchar&B);voidsetRGB(ucharR,ucharG,ucharB);};例8-3單繼承派生類構(gòu)造函數(shù)26_longR=longR;_shortR=shortR;//在派生類構(gòu)造函數(shù)中初始化基類保護(hù)成員_RED=0x00;_GREEN=0x00;_BLUE=0x00;}TEllipse::~TEllipse(){}voidTEllipse::Draw(){uintx,y;getXY(x,y);//調(diào)用基類函數(shù)獲取橢圓的圓心坐標(biāo)std::cout<<"Drawanellipsewithcolor(";std::cout<<static_cast<uint>(_RED)<<","<<static_cast<uint>(_GREEN)<<","<<static_cast<uint>(_BLUE)<<")atpoint(";//cout<<_x<<“,”<<_y<<“)”<<endl;//錯(cuò)誤!在派生類中不能訪
問基類私有成員cout<<x<<","<<y<<")"<<endl;}//TEllipse03.h#include"TShape03.h"classTEllipse:publicTShape{protected:uint_longR,_shortR;public:TEllipse(uintlongR,uintshortR,uintx,uinty);~TEllipse();voidDraw();voidgetR(uint&longR,uint&shortR);voidsetR(uintlongR,uintshortR);};//TEllipse03.cpp#include"TEllipse03.h"#include<iostream>TEllipse::TEllipse(uintlongR,uintshortR,uintx,uinty):TShape(x,y){278.3派生類的構(gòu)造和析構(gòu)派生類不能繼承基類的析構(gòu)函數(shù),需要自己定義析構(gòu)函數(shù),以便在派生類對(duì)象消亡之前進(jìn)行必要的清理工作。派生類的析構(gòu)函數(shù)只負(fù)責(zé)清理它新定義的成員,一般來說,只清理位于堆區(qū)的成員。如果沒有特殊指針數(shù)據(jù)成員需要清理,可以使用由系統(tǒng)提供的默認(rèn)析構(gòu)函數(shù)。當(dāng)派生類對(duì)象消亡時(shí),系統(tǒng)調(diào)用析構(gòu)函數(shù)的順序與建立派生類對(duì)象時(shí)調(diào)用構(gòu)造函數(shù)的順序正好相反,即先調(diào)用派生類的析構(gòu)函數(shù),再調(diào)用基類的析構(gòu)函數(shù)。C++語言程序設(shè)計(jì)288.4多繼承多繼承類結(jié)構(gòu)中,派生類可能有多個(gè)直接基類或間接基類??赡軙?huì)引起成員訪問的二義性或不確定性問題?;悢?shù)據(jù)成員和成員函數(shù)繼承到兩個(gè)派生類,然后又繼承到第二級(jí)派生類,基類的成員有兩份拷貝。C++語言程序設(shè)計(jì)29
classFderiver2:publicbase{private:intm_number;public: Fderiver2(intnumber,intdata):base(data) { m_number=number; cout<<"Fderiver2construction"<<endl; }~Fderiver2(){cout<<"Fderiver2deconstruction"<<endl;}//……};classSderiver:publicFderiver1,publicFderiver2{private:intm_attrib;public: Sderiver(intattrib,intnumber,intvalue,intdata): Fderiver1(value,data),Fderiver2(number,data) { m_attrib=attrib; cout<<"Sderiverconstruction"<<endl; } ~Sderiver(){cout<<"Sderiverdeconstruction"<<endl;}//……};voidmain(){Sderiverobject(3,4,5,6);object.setdata(7);} #include<iostream>usingnamespacestd;classbase{private:intm_data;public:base(intm) { m_data=m; cout<<"baseconstruction"<<endl; }~base(){cout<<"basedeconstruction"<<endl;}voidsetdata(intdata){m_data=data;}intgetdata(intdata){returnm_data;}};classFderiver1:publicbase{private:intm_value;public:Fderiver1(intvalue,intdata):base(data) { m_value=value; cout<<"Fderiver1construction"<<endl; }~Fderiver1(){cout<<"Fderiver1deconstruction"<<endl;}//……};8.4多繼承將共同基類設(shè)置為虛基類,創(chuàng)建派生類對(duì)象時(shí),虛基類的構(gòu)造函數(shù)只會(huì)調(diào)用一次,虛基類的成員在第三層派生類對(duì)象中就只有一份拷貝,不會(huì)再引起二義性問題。將共同基類設(shè)置為虛基類,需要在第一級(jí)派生類時(shí)就用關(guān)鍵字virtual修飾說明繼承關(guān)系,其語法形式:
class派生類名:virtual繼承方式基類名{//……}在多繼承情況下,虛基類關(guān)鍵字的作用范圍和繼承方式關(guān)鍵字相同,只對(duì)緊隨其后的基類起作用?;惖臉?gòu)造函數(shù)只調(diào)用了一次,也就不會(huì)出現(xiàn)基類成員的重復(fù)拷貝。C++語言程序設(shè)計(jì)31C++語言程序設(shè)計(jì)編程技能b32(一)在主函數(shù)中增加調(diào)試信息有3種辦法觀察程序的運(yùn)行,對(duì)應(yīng)3種程序除錯(cuò)技術(shù)(“debug”)。①
通過閱讀程序的辦法分析程序的流程,也稱為“靜態(tài)代碼復(fù)查”。②
在構(gòu)造函數(shù)中增加一些輸出語句,當(dāng)程序執(zhí)行這些語句時(shí),相關(guān)信息就可以顯示在輸出設(shè)備上。③
使用開發(fā)工具提供的調(diào)試器,在程序中設(shè)置斷點(diǎn),執(zhí)行程序時(shí)單步跟蹤代碼的運(yùn)行結(jié)果。這是最強(qiáng)大、最常用的程序除錯(cuò)方法,也是每一個(gè)程序員必須掌握的基本功。②③方法必須執(zhí)行程序才能獲得信息,稱為“動(dòng)態(tài)除錯(cuò)”。C++語言程序設(shè)計(jì)為了驗(yàn)證TShape的構(gòu)造函數(shù)被調(diào)用,可以在TShape::TShape(uintx,uinty)函數(shù)體中增加一條語句cout<<“ThisisTShape(uint,uint)”<<endl稱為“cout大法”。cout<<__FILE__<<“:”<<__LINE__<<““;其中“__FILE__”和“__LINE__”是C++編譯器提供的宏,分別對(duì)應(yīng)“當(dāng)前文件名”和“當(dāng)前行號(hào)”。33刨根問底cC++語言程序設(shè)計(jì)34(I)同名覆蓋與重載C++語言程序設(shè)計(jì)35Override與Overload:前者是“同名覆蓋”,在類繼承中才會(huì)出現(xiàn);后者是“重載”,在同一作用域范圍內(nèi),由參數(shù)個(gè)數(shù)或類型不同的多個(gè)同名函數(shù)構(gòu)成,可以單獨(dú)出現(xiàn),也可以與Override現(xiàn)象同時(shí)出現(xiàn)。一般來說,同名覆蓋現(xiàn)象中的多個(gè)函數(shù)原型(函數(shù)類型、名字、參數(shù))是相同的,而重載現(xiàn)象中的多個(gè)函數(shù)原型(參數(shù))是不同的。11.voidfunc(){cout<<"deriver::func()"<<endl;}12.voidfunc(intx){cout<<"deriver::func("<<x<<")"<<endl;}13.};14.intmain(){15.basem_base;16.deriverm_deriver;17.m_base.func();18.m_deriver.func();19.m_deriver.func(10);20.return0;21.}1.//例8-7,包含1個(gè)文件:Main07.cpp2.//Main07.cpp3.#include<iostream>4.usingnamespacestd;5.classbase{6.public:7.voidfunc(){cout<<"base::func()"<<endl;}8.};9.classderiver:publicbase{10.public:第11行與第12行代碼函數(shù)名相同而參數(shù)不同,形成了重載;第7行與第11行的函數(shù)原型相同但是分別處于基類與派生類中,構(gòu)成了同名覆蓋。(II)轉(zhuǎn)換與繼承C++語言程序設(shè)計(jì)36每個(gè)派生類對(duì)象包含一個(gè)基類部分,這意味著可以像使用基類對(duì)象一樣在派生類對(duì)象上執(zhí)行基類的操作,這就涉及派生類基類的轉(zhuǎn)換。該轉(zhuǎn)換包括以下3種情況。派生類對(duì)象轉(zhuǎn)換為基類對(duì)象。用派生類對(duì)象給基類對(duì)象賦值基類對(duì)象指針指向派生類對(duì)象。用派生類對(duì)象初始化基類對(duì)象的引用。public:TCircle(intmx=0,intmy=0,intmr=1):TShape(mx,my){r=mr;}voidShow(){TShape::Show();cout<<"\tr="<<r;}};intmain(){TShapes;TCirclec(1,2,3);
cout<<"TShapes\t";s.Show();cout<<endl;cout<<"TCirclec\t";c.Show();c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 樁基礎(chǔ)施工安全教育培訓(xùn)
- 行政保障工作總結(jié)
- 2025年度智能化住宅租賃定金合同
- 醫(yī)院二零二五年度醫(yī)技人員招聘及崗位責(zé)任協(xié)議
- 二零二五年度個(gè)人房產(chǎn)買賣合同(含交易稅費(fèi)減免)
- 二零二五年度合同臺(tái)賬自動(dòng)提醒系統(tǒng)培訓(xùn)與支持合同
- 二零二五年度新能源股權(quán)轉(zhuǎn)讓及代持能源發(fā)展合同
- 2025年度離職員工離職前項(xiàng)目交接及保密協(xié)議
- 二零二五年度科研設(shè)備維修保養(yǎng)與數(shù)據(jù)安全保障合同
- 二零二五年度汽車零部件商標(biāo)全球許可合同
- 實(shí)驗(yàn)室廢液處理臺(tái)賬
- 2024年湖南省岳陽(yáng)市中考數(shù)學(xué)一模試卷
- 2024年江蘇護(hù)理職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完美版
- 2024年國(guó)家公務(wù)員考試時(shí)事政治必考試題庫(kù)(完整版)
- 2021泛海三江JB-QBL-FJ300防火門監(jiān)視器說明書
- 電子學(xué)會(huì)2022年12月青少年軟件編程Python等級(jí)考試試卷一級(jí)真題(含答案)
- 《微波法原油含水率在線檢測(cè)儀》
- 第1課 立足時(shí)代 志存高遠(yuǎn) (課件+視頻)- 【中職專用】高一思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 0-3歲嬰幼兒感覺統(tǒng)合訓(xùn)練智慧樹知到答案2024年杭州師范大學(xué)
- 19S406建筑排水管道安裝-塑料管道
- MOOC 人工智能基礎(chǔ)-國(guó)防科技大學(xué) 中國(guó)大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論