![第3章面向?qū)ο缶幊袒A(chǔ)_第1頁](http://file4.renrendoc.com/view/5c048e05947014b4e04144a65529cf82/5c048e05947014b4e04144a65529cf821.gif)
![第3章面向?qū)ο缶幊袒A(chǔ)_第2頁](http://file4.renrendoc.com/view/5c048e05947014b4e04144a65529cf82/5c048e05947014b4e04144a65529cf822.gif)
![第3章面向?qū)ο缶幊袒A(chǔ)_第3頁](http://file4.renrendoc.com/view/5c048e05947014b4e04144a65529cf82/5c048e05947014b4e04144a65529cf823.gif)
![第3章面向?qū)ο缶幊袒A(chǔ)_第4頁](http://file4.renrendoc.com/view/5c048e05947014b4e04144a65529cf82/5c048e05947014b4e04144a65529cf824.gif)
![第3章面向?qū)ο缶幊袒A(chǔ)_第5頁](http://file4.renrendoc.com/view/5c048e05947014b4e04144a65529cf82/5c048e05947014b4e04144a65529cf825.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章 面向?qū)ο缶幊袒A(chǔ)理解基本概念理解類使用構(gòu)造函數(shù)學(xué)習(xí)方法學(xué)習(xí)屬性掌握1姓名、性別、年齡等:屬性學(xué)習(xí)課程、參加社會(huì)活動(dòng):方法3.1
面向?qū)ο缶幊谈拍?對(duì)象——具有屬性和操作(方法)的實(shí)體。 屬性:對(duì)象所處的狀態(tài)方法:用于改變對(duì)象狀態(tài)以達(dá)到特定的功能對(duì)象有一個(gè)唯一的標(biāo)識(shí)名類——在對(duì)象之上的抽象,一種抽象的數(shù)據(jù)類型類是對(duì)象的模板,對(duì)象是類的具體化或類的實(shí)例示例:學(xué)生——類各位同學(xué)——對(duì)象對(duì)象與類屬性型號(hào)價(jià)格里程行為起動(dòng)停車行駛屬性車輪數(shù)量檔的數(shù)量行為加速換檔剎車屬性名稱顏色品種行為吃東西犬
吠搖尾巴34面向?qū)ο蟪绦蛟O(shè)計(jì)在處理對(duì)象時(shí),必須遵循的三個(gè)原則:1.封裝單元。是父類和子類之工具,對(duì)象則是封裝的基本創(chuàng)建分等級(jí)層次的類,繼承用一個(gè)框架把數(shù)據(jù)和代碼組合在一起,形成一個(gè)對(duì)象。類是支持對(duì)象封裝的繼承利用繼承可以間共享數(shù)據(jù)和方法的機(jī)制,通常把父類稱為基類,子類稱為派生類。單繼承:一個(gè)基類可以有任意數(shù)目的派生類,即一父多子
多繼承:一個(gè)類若有兩個(gè)或兩個(gè)以上的直接基類,即一子多父,稱為多重繼承,C#通過接口來實(shí)現(xiàn)多態(tài)性同一個(gè)操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。分為靜態(tài)多態(tài)和動(dòng)態(tài)多態(tài)根據(jù)參數(shù)的差別直接調(diào)用對(duì)象方法根據(jù)基類間接調(diào)用對(duì)象方法53.2
類3.2.1
類的聲明語法形式:[屬性集信息]
[類修飾符] class
類名
[:
類基]{[類主體]}屬性集信息——是C#語言為程序中定義的各種實(shí)體附加一些說明信息,是C#語言的一個(gè)重要特征。屬于高級(jí)編程內(nèi)容,一般涉及不到。類名:唯一標(biāo)識(shí)名類基:直接基類或接口。默認(rèn)基類是object類,多個(gè)接口之間用逗號(hào)相隔類修飾符——訪問權(quán)限、類的類型等,注意同一修飾符不允許出現(xiàn)多次,見表3.16表3.1
類修飾符修飾符作用說明public
表示不限制對(duì)類的訪問。類的訪問權(quán)限省略時(shí)默認(rèn)為publicprotected表示該類只能被這個(gè)類的成員或派生類成員訪問private表示該類只能被這個(gè)類的成員訪問,很少用internal表示該類能夠由程序集中的所有文件使用,而不能由程序集之外的對(duì)象使用new只允許用在嵌套類它表示所修飾的類abstract表示這是一個(gè)抽象因此不能被實(shí)例化sealed表示這是一個(gè)密封顯然密封類不能同中,會(huì)隱藏繼承下來的同名成員類,該類含有抽象成員,,只能用作基類類,不能從這個(gè)類再派生出其他類。時(shí)為抽象類示例:class
Student{//類主體}3.2.2
類的成員類體(類主體)用于定義該類的成員用一對(duì)花括號(hào){
}括起來,由兩部分組成:類體中以類成員聲明形式引入的類成員包括:常數(shù)聲明、字段聲明、方法聲明、屬性聲明、事件聲明、索引器聲明、運(yùn)算符聲明、構(gòu)造函數(shù)聲明、析構(gòu)函數(shù)聲明、靜態(tài)構(gòu)造函數(shù)、類型聲明等直接從基類繼承而來的成員7一、成員類型:靜態(tài)成員在字段、方法、屬性、事件、運(yùn)算符和構(gòu)造函數(shù)聲明中含有public
static修飾符實(shí)例成員在字段、方法、屬性、事件、運(yùn)算符和構(gòu)造函數(shù)聲明中不含有public
static修飾符二、默認(rèn)成員訪問修飾符——private8類成員注意點(diǎn):class
Program{class
AClass{public
static
int
x=1;public
int
y=2;}static
void
Main(string[]
args){AClass
ab
=
new
AClass();Console.WriteLine("y={0},x={1}",ab.y,AClass.x);}}9101.常數(shù)聲明語法形式:[屬性集信息] [常數(shù)修飾符] const類型
標(biāo)識(shí)符
=
常數(shù)表達(dá)式
[,
…]常數(shù)修飾符——new、public、protected、private
、internalpublic:訪問不受限制protected:訪問僅限于包含類或從包含類派生的類型internal:訪問僅限于當(dāng)前程序集。
private:訪問僅限于包含類。類型——sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、枚舉類型或引用類型。常數(shù)表達(dá)式的值類型應(yīng)與目標(biāo)類型一致,或者通過隱式轉(zhuǎn)換規(guī)則轉(zhuǎn)換成目標(biāo)類型。11例如:class
A_const//默認(rèn)訪問修飾符private{public
const
int
X=10;const
double
PI=3.14159;const
double
Y=
0.618+3.14;}注意1.常數(shù)表達(dá)式的值是一個(gè)可以在編譯時(shí)計(jì)算的值注意2.常數(shù)聲明不允許使用static修飾符,只能通過類訪問。class
Test{public
static
void
Main(
){A_const
m
=
new
A_const
(
);Console.WriteLine
(“X={0},
PI={1},Y={2}”,
A_const.X
,
A_const.PI,A_const.Y);}}122.字段聲明語法形式:[屬性集信息] [字段修飾符]
類型
變量聲明列表;變量聲明列表——標(biāo)識(shí)符或用逗號(hào)“,”分隔的多個(gè)標(biāo)識(shí)符,并且變量標(biāo)識(shí)符還可用賦值號(hào)“=”設(shè)定初始值。字段修飾符——new、public、protected、private、internal、static、readonly、volatilestatic:靜態(tài)變量。利用類直接訪問靜態(tài)變量,利用類的實(shí)例(對(duì)象)訪問非靜態(tài)變量readonly:只讀變量,聲明時(shí)或在構(gòu)造函數(shù)中賦值,一旦賦值不可改變。與const常量不同,const常量編譯時(shí)賦值計(jì)算。volatile:表示字段可能被多個(gè)并發(fā)執(zhí)行的進(jìn)程修改。13【例3.1】通過構(gòu)造函數(shù)給只讀字段賦值//Radius是只讀字段//通過構(gòu)造函數(shù)對(duì)radius賦值usingSystem;public
class
Area{public
readonly
double
Radius;private
double
x,
y
;public
double
Size
;public
static
double
Sum=0.0
;public
Area
(
){Radius=1.0;}}class
Test{publicstaticvoidMain(){Area
s1
=
new
Area(
);//s1.Radius
=
2;Console.WriteLine
("Radius={0},Size={1},Sum={2}",s1.Radius,s1.Size
,
Area.Sum);//靜態(tài)字段通過類訪問Area.Sum,實(shí)例字段通過對(duì)象訪問s1.SizeConsole.Read();}}出錯(cuò)了!無法修改只讀字段3.2.3
構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)實(shí)現(xiàn)對(duì)象初始化分為實(shí)例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù)函數(shù)調(diào)用時(shí)機(jī):new1)實(shí)例構(gòu)造函數(shù)的聲明語法形式:[屬性集信息]
[構(gòu)造函數(shù)修飾符]
標(biāo)識(shí)符
(
[參數(shù)列表]
)[:
base
(
[參數(shù)列表]
)
] [:
this
(
[參數(shù)列表]
)
]{構(gòu)造函數(shù)語句塊}public與類名相同沒有返回值構(gòu)造函數(shù)重載:參數(shù)個(gè)數(shù)或類型不同調(diào)用基類同參數(shù)列表的構(gòu)造函數(shù)14調(diào)用本類同參數(shù)列表的構(gòu)造函數(shù)15構(gòu)造函數(shù)修飾符——public、protected、internal、private、extern一般地,構(gòu)造函數(shù)總是public類型的。如果是private類型的,表明類不能被外部類實(shí)例化。標(biāo)識(shí)符([參數(shù)列表]opt)——構(gòu)造函數(shù)名 必須與這個(gè)類同名,無返回類型和返回值構(gòu)造函數(shù)可以有0~n個(gè)參數(shù)——構(gòu)造函數(shù)重載用new運(yùn)算符創(chuàng)建一個(gè)類的對(duì)象時(shí),類名后的一對(duì)圓括號(hào)提供初始化列表,系統(tǒng)根據(jù)這個(gè)初始化列表的參數(shù)個(gè)數(shù)、參數(shù)類型和參數(shù)順序調(diào)用不同的構(gòu)造函數(shù)。實(shí)例構(gòu)造函數(shù)注意點(diǎn):16class
Test{static
void
Main(){Time
t1,
t2,
t3,
t4
;//對(duì)t1,t2,t3,t4分別調(diào)用不同的構(gòu)造函數(shù)t1=
new
Time
();t2
=
new
Time(8);t3
=
new
Time(8,
30);
t4
=
new
Time(8,30,30);}}【例3.2】Time類的構(gòu)造函數(shù)及其重載using
System;public
class
Time{private
int
hour,
minute,
second;public
Time
(
){hour=minute=second=0;}public
Time
(int
h){hour=h;minute=second=0;}public
Time
(int
h,
int
m){hour=h;minute=m;second=0;}public
Time
(int
h,
int
m,
int
s){hour=h;nute=m;cond=s;}}mi
public
string
getTime()se
{returnhour.ToString()+":"+minute.ToString()+":"+second.ToString();}Console.WriteLine("t1={0}",t1.getTime());17【例3.3】構(gòu)造函數(shù)初始化usingSystem;class
Point{public
double
x,
y;public
Point(
){x
=
0; y
=
0;}public
Point(double
x,
double
y){this.x
=
x;this.y=
y;//當(dāng)this在實(shí)例構(gòu)造函數(shù)中使用時(shí),//它的值就是對(duì)該構(gòu)造的對(duì)象的引用}}class
Test{public
static
void
Main(
){Point
a
=
new
Point(
);Point
b=new
Point(3,
4);//
用構(gòu)造函數(shù)初始化對(duì)象Console.WriteLine
("a.x={0},
a.y={1}",
a.x,
a.y
);Console.WriteLine
("b.x={0},
b.y={1}",
b.x,
b.y
);Console.Read
();}}a.x=0,
a.y=0b.x=3,
b.y=4構(gòu)造函數(shù)注意點(diǎn):若類中沒有提供構(gòu)造函數(shù),則CLR會(huì)自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造函數(shù)一旦類中提供了自定義的構(gòu)造函數(shù),系統(tǒng)則不提供默認(rèn)的構(gòu)造函數(shù)不必顯示調(diào)用構(gòu)造函數(shù)實(shí)例構(gòu)造函數(shù)不能被繼承18派生類構(gòu)造函數(shù)的調(diào)用調(diào)用時(shí)機(jī):創(chuàng)建派生類的對(duì)象時(shí),即new構(gòu)造函數(shù)不被繼承派生類構(gòu)造函數(shù)在執(zhí)行前,首先顯式或隱式地調(diào)用基類構(gòu)造函數(shù)默認(rèn)調(diào)用基類的無參數(shù)構(gòu)造函數(shù)除非顯式地指定調(diào)用有參數(shù)構(gòu)造函數(shù)this關(guān)鍵字引用類的當(dāng)前實(shí)例base關(guān)鍵字用于從派生類中訪問基類的成員調(diào)用基類上已被其他方法重寫的方法指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)19【例3.4】派生類構(gòu)造函數(shù)及其調(diào)用using
System;class
Point{private
int
x,
y;public
Point(){x
=
0; y
=
0;Console.WriteLine
("Point()
constructor
:
{0}
",
this
);}public
Point(int
x,
int
y){this.x
=
x;this.y
=
y;);Console.WriteLine
("Point(x,y)
constructor
:
{0}
",
this}}class
Circle
:
Point{//默認(rèn)約定調(diào)用基類的無參構(gòu)造函private
double
radius;public
Circle
(){數(shù)Point()this
);{0}
",
this
);20Console.WriteLine
("Circle
()
constructor
:
{0}
",
this
);}public
Circle
(double
radius
):
base
(
){this.radius
=
radius;Console.WriteLine
("Circle
(radius)
constructor
:
{0}
",}public
Circle
(int
x,
int
y,
double
radius
):
base
(x,
y
){this.radius
=
radius;Console.WriteLine
("Circle
(x,
y,
radius)
constructor
:}}class
Test{static
void
Main(){Point
a
=
new
Point();Circle
b
=
new
Circle
(3.5);Circle
c
=
new
Circle
(1,
1,
4.8);Console.Read
();132}}54212)靜態(tài)構(gòu)造函數(shù)的聲明語法形式:[屬性集信息] [靜態(tài)構(gòu)造函數(shù)修飾符]
標(biāo)識(shí)符(){靜態(tài)構(gòu)造函數(shù)體}靜態(tài)構(gòu)造函數(shù)修飾符——[extern]static
或者static
[extern]。如有extern修飾,則是一個(gè)外部靜態(tài)構(gòu)造函數(shù),不提供任何實(shí)際的實(shí)現(xiàn),靜態(tài)構(gòu)造函數(shù)體僅僅是一個(gè)分號(hào)標(biāo)識(shí)符——是靜態(tài)構(gòu)造函數(shù)名,必須與類同名且不能有參數(shù)靜態(tài)構(gòu)造函數(shù)體——只能對(duì)靜態(tài)數(shù)據(jù)成員進(jìn)行初始化22靜態(tài)構(gòu)造函數(shù)注意點(diǎn):靜態(tài)構(gòu)造函數(shù)不可繼承,不能直接調(diào)用調(diào)用時(shí)機(jī):創(chuàng)建類的實(shí)例引用類的任何靜態(tài)成員至多被執(zhí)行一次若類沒有聲明靜態(tài)構(gòu)造函數(shù),而又包含帶有初始設(shè)定的靜態(tài)字段時(shí),編譯器會(huì)自動(dòng)生成一個(gè)默認(rèn)的靜態(tài)構(gòu)造函數(shù)232.析構(gòu)函數(shù)語法形式:[屬性集信息] [
extern
]~標(biāo)識(shí)符
(
){析構(gòu)函數(shù)體}標(biāo)識(shí)符——必須與類名相同,前面需加“~”析構(gòu)函數(shù)——不能寫返回類型,也不能帶參數(shù),一個(gè)類最多只能有一個(gè)析構(gòu)函數(shù)析構(gòu)函數(shù)注意點(diǎn)析構(gòu)函數(shù)不能由程序顯式地調(diào)用,而是由系統(tǒng)在釋放對(duì)象時(shí)自動(dòng)調(diào)用派生類對(duì)象的析構(gòu)函數(shù)調(diào)用鏈:執(zhí)行派生類的析構(gòu)函數(shù)執(zhí)行基類的析構(gòu)函數(shù),直到調(diào)用object類的析構(gòu)函數(shù)為止24與執(zhí)行構(gòu)造函數(shù)的順序相反第3章 面向?qū)ο缶幊袒A(chǔ)理解基本概念理解類使用構(gòu)造函數(shù)學(xué)習(xí)方法學(xué)習(xí)屬性掌握25回顧對(duì)象——具有屬性和操作(方法)的實(shí)體類——對(duì)象的抽象,抽象的數(shù)據(jù)類型類是對(duì)象的模板對(duì)象是類的具體化或類的實(shí)例26類的成員271.類體中以類成員聲明形式引入的類成員包括:常數(shù)聲明、字段聲明、構(gòu)造函數(shù)聲明、析構(gòu)函數(shù)聲明、靜態(tài)構(gòu)造函數(shù)、方法聲明、
屬性聲明等2.直接從基類繼承而來的成員訪問修飾符28public訪問不受限制protected只能被本身或派生類的實(shí)例訪問private只能被本身訪問static靜態(tài),非實(shí)例構(gòu)造函數(shù)29構(gòu)造函數(shù)——實(shí)例構(gòu)造函數(shù)與類名同名在類進(jìn)行new運(yùn)算(即類實(shí)例化時(shí))this
:引用當(dāng)前類的實(shí)例base:用于從派生類中訪問基類的成員調(diào)用基類上已被其他方法重寫的方法指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)該調(diào)用的基類構(gòu)造函數(shù)調(diào)用順序先基類后派生類303.3
方法3.3.1
方法的聲明語法形式:[屬性集信息] [方法修飾符]
返回類型
方法名(
[形參表]){方法體}C#中所有的變量、方法都必須封裝在類中對(duì)象間、類間只能通過類所提供的方法進(jìn)行互操作從方法的聲明、方法的參數(shù)、靜態(tài)方法與實(shí)例方法、方法的重載與覆蓋等方面理解31表3.2
方法修飾符修飾符作用說明new在一個(gè)繼承結(jié)構(gòu)中,用于隱藏基類同名的方法public表示該方法可以在任何地方被訪問,默認(rèn)publicprotected表示該方法可以在它的類體或派生類類體中被訪問,但不能在類體外訪問private表示該方法只能在這個(gè)類體內(nèi)被訪問internal表示該方法可以被同處于一個(gè)工程的文件(程序集)訪問static表示該方法屬于類本身,而不屬于某特定對(duì)象virtual表示該方法可在派生類中重寫,來更改該方法的實(shí)現(xiàn)abstract表示該方法僅僅定義了方法名及執(zhí)行方式,但沒有給出具體實(shí)現(xiàn),所以包含這種方法的類是抽象類,有待于派生類的實(shí)現(xiàn)override表示該方法是將從基類繼承的virtual方法的新實(shí)現(xiàn)sealed表示這是一個(gè)密封方法,它必須同時(shí)包含override修飾,以防止它的派生類進(jìn)一步重寫該方法extern表示該方法從外部實(shí)現(xiàn)32表3.3
修飾符的無效組合修飾符不能與下列選項(xiàng)一起使用staticvirtual、abstract
和overridevirtualstatic、abstract
和overrideoverridenew、static和virtualabstractvirtual
和staticnewoverrideextern
abstract返回類型——方法可以返回值也可以不返回值。返 回值類型為任意一種C#的數(shù)據(jù)類型,通過return語句返回。如果方法不返回值,則它的返回類型可標(biāo)為void,默認(rèn)情況下為void方法名:除Main()、關(guān)鍵字以外33【例3.6】下面程序中的StackTp類定義了幾個(gè)方法以模擬實(shí)現(xiàn)一個(gè)壓棧操作。using
System;class
StackTp{int
MaxSize;int
Top;int
[
]
StkList;//構(gòu)造函數(shù)public
StackTp
(
){MaxSize=100;Top=0;StkList=new
int
[MaxSize];構(gòu)造函數(shù)}public
StackTp(int
size)
//{MaxSize=size;Top=0;StkList=new
int
[MaxSize];//方法}public
bool
isEmptyStack(){if
(Top==0)elsereturn
true;return
false;}public
bool
isFullStack(){if(Top==MaxSize)
returntrue;else return
false;}public
void
push(int
x){StkList[Top]=x;Top++;}}class
Test{public
static
void
Main(){StackTp
ST
=
new
StackTp(20);string
s1;if(ST.isEmptyStack())//調(diào)用方法s1="Empty";elses1="not
Empty";Console.WriteLine
("Stack
is
"
+
s1);for
(int
i=0;
i<20;
i++)ST.push(i+1);if(ST.isFullStack())//調(diào)用方法s1="Full";elses1="not
Full";Console.WriteLine
("Stack
is
"
+
s1);Console.Read
();}}343.3.2
方法的參數(shù)形參(形式參數(shù)):聲明方法時(shí)包含的方法參數(shù)說明實(shí)參(實(shí)際參數(shù)):調(diào)用方法時(shí)給出的實(shí)際參數(shù)在C#中實(shí)參與形參有4種傳遞方式:值參數(shù)引用參數(shù)——ref輸出參數(shù)——out參數(shù)數(shù)組——params1.值參數(shù)在方法聲明時(shí)不加修飾的形參就是值參數(shù),它表明實(shí)參與形參之間按值傳遞在方法中對(duì)形參的修改不影響外部的實(shí)參屬于輸入?yún)?shù)35using
System;class
Myclass{public
void
Sort
(intx,
inty,int
z){int
tmp;//tmp是方法Sort的局部變量//將x,
y,z按從小到大排序
if(x>y){tmp=x;
x=y; y=tmp;
}if(x>z){tmp=x;
x=z; z=tmp;
}if(y>z){tmp=y;
y=z; z=tmp;
}//Console.WriteLine(“x={0},y={1},
z={2}"
x,y,z);}}class
Test{static
void
Main(){Myclass
m
=
new
Myclass
(
);int
a,
b,
c;a=30;
b=20;
c=10;m.Sort
(a,
b,
c);Console.WriteLine
("a={0},b={1},
c={2}"
,
a,
b,
c
);Console.Read
();}}【例3.7】演示了當(dāng)方法Sort傳遞的是值參數(shù)時(shí),對(duì)形參的修改不影響其實(shí)參。36是值參數(shù)傳遞方式,形參另外分配一塊內(nèi)存,接受實(shí)參的引用值副本對(duì)引用值的修改不會(huì)影響實(shí)參
如果改變的是所引用的對(duì)象,則將會(huì)影響實(shí)參所引用的對(duì)象值參數(shù)——傳遞引用對(duì)象內(nèi)存首地址37class
Test{static
void
Main(){Myclass
m
=
new
Myclass
(
);int
[
]
score
={
87,89,56,90,100,75,64,45,
80,
84}
;m.SortArray(score);for
(int
i=0;i<score.Length;i++){Console.Write
("score[{0}]={1},"
,
i
,
score[i]
);if
(i==4)
Console.WriteLine
();}Console.Read
();}}【例3.8】程序演示的是當(dāng)方法傳遞的是一個(gè)引用對(duì)象(如數(shù)組)時(shí),對(duì)形參的修改會(huì)影響到實(shí)參using
System;class
Myclass{public
void
SortArray
(int
[
]
a){int
i,
j,
pos,tmp;for
(i=0;
i<a.Length-1
;
i++){for
(pos=j=i;
j<a.Length;
j++)if(a
[pos]>a
[j])pos=j;
查詢最小值if
(pos
!=
i
){tmp=a[i];a[i]=a[pos];a[pos]=tmp;}}}}改變了引用的對(duì)象832.
引用參數(shù)引用參數(shù)——形參的改變影響實(shí)參1.例3.7中實(shí)際變量a、b、c是不隨形參x、y、z的,但如果想改變實(shí)際變量a、b、c的值,則用引用參數(shù)39using
System;class
Myclass{public
void
Sort
(intx,
inty,int
z){int
tmp;//tmp是方法Sort的局部變量//將x,
y,z按從小到大排序
if(x>y){tmp=x;
x=y; y=tmp;
}if(x>z){tmp=x;
x=z; z=tmp;
}if(y>z){tmp=y;
y=z; z=tmp;
}//Console.WriteLine(“x={0},y={1},
z={2}"
x,y,z);}}class
Test{static
void
Main(){Myclass
m
=
new
Myclass
(
);int
a,
b,
c;a=30;
b=20;
c=10;m.Sort
(a,
b,
c);Console.WriteLine
("a={0},b={1},
c={2}"
,
a,
b,
c
);Console.Read
();}}【例3.7】演示了當(dāng)方法Sort傳遞的是值參數(shù)時(shí),對(duì)形參的修改不影響其實(shí)參。42.
引用參數(shù)0引用參數(shù)——形參的改變影響實(shí)參例3.7中實(shí)際變量a、b、c是不隨形參x、y、z的,但如果想改變實(shí)際變量a、b、c的值,則用引用參數(shù)C#用ref修飾符聲明引用參數(shù)引用參數(shù)不創(chuàng)建新的存儲(chǔ)單元,與方法調(diào)用中的實(shí)際參數(shù)變量同處一個(gè)存儲(chǔ)單元——傳遞內(nèi)存地址屬于輸入?yún)?shù)【例3.9】將例3.7程序中Sort方法的值參數(shù)傳遞方式改成引用參數(shù)傳遞,這樣在方法Sort中對(duì)參數(shù)x、y、z按從小到大的排序影響了調(diào)用它的實(shí)參a、b、c。using
System;class
Myclass{public
void
Sort
(ref
int
x, ref
int
y,
refint
z){int
tmp;//tmp是方法Sort的局部變量//
將x,
y,
z按從小到大排序if
(x>y)
{
tmp=x;
x=y; y=tmp;
}if
(x>z)
{
tmp=x;
x=z; z=tmp;
}if
(y>z)
{
tmp=y;
y=z; z=tmp;
}}}class
Test{static
void
Main(){Myclass
m
=
new
Myclass
(
);int
a,
b,
c;a=30;
b=20;
c=10;m.Sort
(ref
a,
ref
b,
ref c);Console.WriteLine
("a={0},
b={1},c={2}",
a,
b,
c
);Console.Read();}}414使用ref聲明引用參數(shù)的注意:2方法的參數(shù)聲明中ref關(guān)鍵字僅對(duì)緊跟在它后面的參數(shù)有效,而不能應(yīng)用于整個(gè)參數(shù)表。例如,Sort方法中x、y、z都要加ref修飾在方法的調(diào)用中也要用ref修飾實(shí)參,且實(shí)參必須為變量,實(shí)參和形參的數(shù)據(jù)類型必須完全匹配在方法外(方法調(diào)用前),ref參數(shù)必須明確賦值ref參數(shù)也可以用于傳遞引用類型的對(duì)象第3章面向?qū)ο缶幊袒A(chǔ)43輸出參數(shù)——out參數(shù)數(shù)組——params方法方法聲明——如同C語言的“函數(shù)”訪問修飾符默認(rèn)為public方法參數(shù)值參數(shù)(值類型、引用類型)引用參數(shù)——ref方法重載與覆蓋方法簽名方法覆蓋——new
和虛方法virtual
override屬性propertyget訪問器set訪問器443.輸出參數(shù)45用法與ref參數(shù)相似,但為輸出參數(shù)值只能用于從方法中傳出值,因此必須在方法結(jié)束之前對(duì)out參數(shù)賦值在參數(shù)前加out修飾符的形式參數(shù)out參數(shù)也可以用于傳遞引用類型的對(duì)象46class
Test{static
void
Main(){Myclassm=
newMyclass(
);int
[
]
score
={
87,89,56,90,100,75,64,45,
80,
84}
;int
smax,smin;double
savg;m.MaxMinArray(score,outsmax,
out
smin,
out
savg);Console.Write
("Max={0},Min={1},
Avg={2}
"
,
smax,smin,savg
);Console.Read
();}}【例3.10】求一個(gè)數(shù)組中元素的最大值、最小值和平均值。using
System;class
Myclass{public
void
MaxMinArray
(int
[
]
a,out
int
max,
out
int
min,
out
double
avg
){int
sum
;sum
=
max
=
min
=
a[0]
;
for
(int
i=1;
i<a.Length
;
i++){if
(a[i]>max)
max=a[i];if
(a[i]<min)
min=a[i];sum+=a[i];}avg=sum
/
a.Length;}}47【例3.11】下面程序定義了兩個(gè)方法,一個(gè)是Swap1,一個(gè)是Swap2,它們都有兩個(gè)引用對(duì)象作為參數(shù),但Swap2的參數(shù)加了ref修飾,調(diào)用這兩個(gè)方法產(chǎn)生的結(jié)果是不一樣的。usingSystem;class
Myclass{public
void
Swap1
(string
s,
string
t){string
tmp;tmp=s;
s=t;t=tmp;}public
void
Swap2
(ref
string
s,
refstring
t){string
tmp;tmp=s;
s=t;t=tmp;}}class
Test{static
void
Main(){Myclass
m
=
new
Myclass
(
);string
s1="ABCDEFG",
string
s2="134567";m.Swap1(s1,s2);Console.WriteLine
("s1={0}"
,
s1
);Console.WriteLine
("s2={0}"
,
s2
);m.Swap2(ref
s1,
ref
s2);Console.WriteLine
("s1={0}"
,
s1
);Console.WriteLine
("s2={0}"
,
s2
);Console.Read
();}}s1,s2的引用并沒有改變s1,s2的引用互相交換了484.參數(shù)數(shù)組特點(diǎn):參數(shù)為可變長度使用params關(guān)鍵字來指定一個(gè)可變長度的參數(shù)表注意:一個(gè)方法中只能聲明一個(gè)params參數(shù)params參數(shù)必須放在參數(shù)表最后params參數(shù)是一個(gè)一維數(shù)組,參數(shù)數(shù)組的參數(shù):0~nparams不可與ref、out修飾符組合使用3.3.3
靜態(tài)方法與實(shí)例方法靜態(tài)方法用static修飾只能訪問類中的靜態(tài)成員49【例3.12】下面程序演示了Myclass類中的方法MaxMin有一個(gè)參數(shù)數(shù)組類型的參數(shù),在調(diào)用這個(gè)方法時(shí)具有靈活性。usingSystem;class
Myclass{public
void
MaxMin
(out
int
max,
outint
min,
paramsint
[
]
a){//如果可變參數(shù)為零個(gè),//取一個(gè)約定值或產(chǎn)生異常if
(a.Length==0){max=min=-1;return
;}max=
min
=
a[0]
;for(int
i=1;
i<a.Length
;
i++){if
(a[i]>max)
max=a[i];if
(a[i]<min)
min=a[i];}}}class
Test{static
void
Main(){Myclassm=
newMyclass();int
[]
score
=
{
87,89,56,90,100,75,64,45,
80,
84}int
smax,smin;m.MaxMin
(outsmax,outsmin);//可變參數(shù)的個(gè)數(shù)可以是零個(gè)Console.WriteLine
("Max={0},
Min={1}
"
,
smax,smin
);m.MaxMin(outsmax,outsmin,
45,76,89,90);//在4個(gè)數(shù)之間找最大、最小Console.WriteLine
("Max={0},
Min={1}
"
,
smax,smin
);m.MaxMin
(out
smax,
out
smin,
score);
//可變參數(shù)也可接受數(shù)組對(duì)象Console.WriteLine
("Max={0},
Min={1}
"
,
smaxsmin
);Console.Read
();}}503.3.4
方法的重載與覆蓋方法重載同一個(gè)類中存在具有相同方法名,但具有不同的形式參數(shù)個(gè)數(shù)、修飾符及類型的兩個(gè)或兩個(gè)以上的方法。重載是多態(tài)的形式之一。編譯時(shí)根據(jù)調(diào)用時(shí)給出的實(shí)參個(gè)數(shù)和類型調(diào)用相應(yīng)的方法,以實(shí)現(xiàn)多態(tài)方法簽名:方法名、形參個(gè)數(shù)、形參修飾符、形參類型一起構(gòu)成方法簽名51【例3.14】下面程序定義的Myclass類中含有4個(gè)名為max的方法,但它們或者參數(shù)個(gè)數(shù)不同,或者參數(shù)類型不同,在Main調(diào)用該方法時(shí),編譯器會(huì)根據(jù)參數(shù)的個(gè)數(shù)和類型確定調(diào)用哪個(gè)max方法。usingSystem;class
Myclass{public
int
max(int
x,
int
y){return
x>=y
?
x
:
y
;}public
double
max(double
x,
double
y){returnx>=y?x:
y;}public
int
max
(int
x,
int
y,
int
z){returnmax
(
max(x,
y),
z)
;}public
double
max
(
double
x,
double
y,double
z){returnmax
(
max(x,
y),
z)
;}}class
Test{staticvoidMain(){Myclass
m
=newMyclass();int
a,
b,
c;double
e,
f,
g
;a=10;
b=20;
c=30;e=
1.5;
f
=
3.5;
g
=
5.5;Console.WriteLine
("max({0},{1})=
{2}
",a,b,
m.max(a,b));Console.WriteLine
("max({0},{1},{2})={3}
"
,a,b,c,
m.max(a,b,c));Console.WriteLine
("max({0},{1})=
{2}"e,f,m.max(e,f));Console.WriteLine
("max({0},{1},{2})={3}
"
,e,f,g,
m.max(e,f,g));Console.Read
();}}52方法的覆蓋——使用new隱藏有相同簽名的方法當(dāng)派生類與基類有相同名稱或簽名的成員時(shí),在派生類中默認(rèn)隱藏基類成員,但提示警告在派生類成員聲明中加new修飾符,可以取消警告信息基類對(duì)象被引用到派生類對(duì)象時(shí),訪問的仍是基類的方法靜態(tài)多態(tài)53【例3.15】定義了一個(gè)基類Shape,含有字段域width和height,分別表示形狀的寬和高,并定義了一個(gè)area方法,求形狀的面積。它的派生類Triangle和Trapezia都用關(guān)鍵字new修飾了area方法using
System;class
Shape{
protected
double
width;protected
double
height;public
Shape(
){
width=height=0;
}public
Shape(double
x){
width=height=x;
}public
Shape(double
w,
double
h
){
width=w;height=h;
}public
double
area
(){ return
width*height;
}//三角形}class
Triangle
:
Shape{public
Triangle
(double
x,
double
y):base(x,y){
}new
public
double
area
()//派生類方法與基類方法同名,編譯時(shí)會(huì)有警告信息{ return
width*height/2
;
}}class
Trapezia:Shape
//梯形{ double
width2
;public
Trapezia(double
w1,
double
w2,
doubleh)
:
base
(w1,
h)
{ width2=w2;
}new
public
double
area
(
)//加new隱藏基類的area方法{ return
(width+width2)*height/2
;
}}class
Test{static
void
Main(){Shape
A
=
new
Shape(2,
4);Triangle
B
=
new
Triangle(1,
2);Trapezia
C
=
new
Trapezia(2,
3,4);Console.WriteLine("A.area=
{0}
",
A.area());//調(diào)Shape的area方法Console.WriteLine("B.area=
{0}
",
B.area());//調(diào)Triangle的area方法Console.WriteLine("C.area=
{0}
",
C.area());//調(diào)Trapezia的area方法A
=
B;//在C#中,基類的引用也能夠引用派生類對(duì)象Console.WriteLine("A.area=
{0}
",
A.area());//調(diào)Shape的area方法A
=
C;Console.WriteLine("A.area=
{0}
",
A.area());//調(diào)Shape的area方法Console.Read();}}基類方法45虛方法:基類的方法用關(guān)鍵字virtual修飾對(duì)基類的虛方法重載:派生類用關(guān)鍵字
override修飾與基類中虛方法有相同簽名的方法注意:不能將虛方法聲明為靜態(tài)的(static)不能將虛方法聲明為私有的(private)覆蓋方法必須與它相關(guān)的虛方法匹配一個(gè)覆蓋方法覆蓋的必須是虛方法實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)(動(dòng)態(tài)綁定)55【例3.16】將例3.15改寫,Shape類中的方法area用virtual修飾,而派生類Triangle和Trapezia用override修飾area方法。using
System;class
Shape{protected
double
width;protected
double
height;public
Shape(
){
width=height=0;
}public
Shape(double
x){
width=height=x;
}public
Shape(double
w,
double
h
){ width=w;
height=h;
}public
virtual
double
area
(
)//基類中用virtual修飾符聲明一個(gè)虛方法{ return
width*height;
}//三角形}class
Triangle:
Shape{public
Triangle
(double
x,
double
y):base(x,y){
}public
override
double
area
(
)//派生類中用override修飾符覆蓋基類虛方法{ return
width*height/2
;
}}class
Trapezia:Shape//梯形{ double
width2
;public
Trapezia(double
w1,
double
w2,
double
h)
:base
(w1,
h){
width2=w2;}public
override
double
area
(
)派生類中用override修飾符覆蓋基類虛方法{ return
(width+width2)*height/2
;
}class
Test{static
voidMain(){Shape
A
=
new
Shape(2,
4);Triangle
B
=
new
Triangle(1,
2);Trapezia
C
=
new
Trapezia(2,
3,
4);Console.WriteLine("A.area=
{0}
",A.area());
//調(diào)Shape的area方法Console.WriteLine("B.area=
{0}
",B.area());
//調(diào)Triangle的area方法Console.WriteLine("C.area=
{0}
",C.area());
//調(diào)Trapezia的area方法A
=B;Console.WriteLine("A.area=
{0}
",A.area());
//調(diào)派生類Triangle的area方法
A=C;Console.WriteLine("A.area=
{0}
",A.area());
//調(diào)派生類Trapezia的area方法
Console.Read();}}派生類方法563.4
屬性property1.回顧一下例3.2(P51)。①為了實(shí)現(xiàn)良好的數(shù)據(jù)封裝和數(shù)據(jù)隱藏,類的字段成員的訪問屬性一般設(shè)置成
private(默認(rèn))或protected②利用public
方法來訪問私有的或受保護(hù)的字段57public
string
getTime(){returnhour.ToString()+":"+minute.ToString()+":"+second.ToString();}【例3.2】Time類的構(gòu)造函數(shù)及其重載using
System;public
class
Time{private
int
hour,
minute,
second;public
Time
(
){hour=minute=second=0;}public
Time
(int
h){hour=h;minute=second=0;}public
Time
(int
h,
int
m){hour=h;minute=m;second=0;}public
Time
(int
h,
int
m,
int
s){hour=h;minute=m;second=s;}}class
Test{static
void
Main(){Time
t1,
t2,
t3,
t4
;t1=
new
Time
();
t2
=
new
Time(8);t3
=
new
Time(8,
30);
t4
=
new
Time(8,30,30);t1.getTime();
t2.getTime();t3.getTime();
t4.getTime();}}583.4
屬性1.
保持原有的數(shù)據(jù)封裝和數(shù)據(jù)隱藏,類的字段成員的訪問屬性仍然設(shè)置成private(默認(rèn))或protected?????2.
不利用public方法來訪問私有的或受保護(hù)的字段屬性(property)①屬性值的讀/寫與字段域語法相同;②利用get和set訪問器實(shí)現(xiàn)屬性值的讀/寫如何做??59語法形式:[屬性集信息] [屬性修飾符]
類型
成員名{訪問器聲明}屬性修飾符——與方法修飾符(public,private,protected,…)相同,包括new、static、virtual、abstract、override和4種訪問修飾符的合法組合,遵循相同的規(guī)則。訪問器聲明——聲明屬性的訪問器,get訪問器或set訪問器,或者兩個(gè)語法形式:get
//讀訪問器{…
//訪問器語句塊}set
//寫訪問器{…
//訪問器語句塊}屬性的聲明方法60get訪問器返回值類型與屬性的類型相同在語句塊中的return語句必須有一個(gè)可隱式轉(zhuǎn)換為屬性類型的表達(dá)式set訪問器沒有返回值有一個(gè)隱式的值參數(shù)value,類型與屬性的類型相同。屬性的種類讀/寫屬性:同時(shí)包含get和set訪問器的屬性只讀/只寫屬性:只包含get或set訪問器的屬性屬性中的訪問器使用注意61【例3.17】對(duì)TextBox類的text、fontname、fontsize、multiline域提供屬性方式的讀/寫訪問。using
System;class
TextBox{private
string
text;private
int
fontsize;
private
bool
multiline;public
TextBox
(
){text="text1";fontsize=12;fontname="宋體";multiline=false;}public
string
Text{
//
Text屬性,可讀可寫get
{
return
text;
}set
{
text=value;
}}public
string
FontName{ //
FontName屬性,只讀屬性get
{ return
fontname;
}}public
int
FontSize{
//FontSize屬性,可讀可寫
get{return
fontsize;}
set{fontsize=value;}}public
bool
MultiLine{
//MultiLine屬性,只寫
set{multiline=value;}}}class
Testprivate
string
fontname;
{static
void
Main(){TextBox
Text1=
new
TextBox
();//調(diào)用Text屬性的get訪問器Console.WriteLine("Text1.Text={0}",Text1.Text);Text1.Text="這是文本框";//調(diào)用Text屬性的set訪問器Console.WriteLine
("Text1.Text=
{0}
"
,
Text1.Text);Console.WriteLine
("Text1.Fontname=
{0}
"
,Text1.FontName);Text1.FontSize=36;Text1.MultiLine
=
true;Console.WriteLine
("Text1.FontSize=
{0}
"
,Text1.FontSize);Console.Read
();}}62【例3.18】定義Label類,設(shè)置Width和Heigh屬性,分別存放兩點(diǎn)之間在水平坐標(biāo)軸和垂直坐標(biāo)軸上的投影長度。using
System;class
Point{int
x,
y;public
int
X{get
{
return
x;
}}public
int
Y{get{
return
y;
}}public
Point
(
){
x=y=0;
}public
Point
(int
x,
int
y){this.x=x;this.y=y;}}class
Label{Point
p1=new
Point
(
);Point
p2=new
Point
(5,
10);public
int
Width//計(jì)算兩點(diǎn)之間在水平坐標(biāo)軸上的投影長度{get
{
return
p2.X-p1.X;
}}public
int
Height//計(jì)算兩點(diǎn)之間在垂直坐標(biāo)軸上的投影長度{ get
{
return
p2.Y-p1.Y;
}}}class
Test{static
void
Main(){Label
Label1=
new
Label
();Console.WriteLine
("Label1.Width=
{0}
",
Label1.Width);Console.WriteLine
("Label1.Height=
{0}
",
Label1.Height);Console.Read
();}}633.5
綜合應(yīng)用實(shí)例【例3.19】學(xué)生成績管理程序。根據(jù)學(xué)生選修的課程及課程學(xué)分和課程成績計(jì)算GPA,最后按GPA的值對(duì)學(xué)生進(jìn)行排序?;舅悸罚罕境绦虻膶W(xué)生總?cè)藬?shù)、課程名、課程學(xué)分可以由控制臺(tái)輸入,為敘述簡單,假定每個(gè)學(xué)生所選修的課程相同。Course類中定義了課程名、課程學(xué)分字段域,Name屬性、構(gòu)造函數(shù)。
Student類中定義字段:學(xué)生姓名、學(xué)號(hào)、選修課程數(shù)、Course類對(duì)象數(shù)組、成績和GPA等屬性:CourseNum靜態(tài)屬性、GPA屬性、Name屬性方法:SetCourse方法——設(shè)置課程名,靜態(tài)方法AddData方法——給每個(gè)學(xué)生加入姓名、學(xué)號(hào)、成績。
ComputeGPA
方法——計(jì)算學(xué)生成績的GPAstuSwap方法——對(duì)兩個(gè)Student對(duì)象內(nèi)容進(jìn)行交換。64//課程名//課程學(xué)分class
Course{string
courseName;int
courseMark;public
Course(){}public
Course(string
Name,
int
Mark){courseName=Name;courseMark=Mark;}//Name屬性,課程名可讀可寫public
string
Name{getreturn
courseName;}{set{courseName=value;
}//Mark屬性,課程學(xué)分可讀可寫returncourseMark;}courseMark=value;}}public
int
Mark{get{set{}}65class
Student{string
stuName;//學(xué)生姓名string
stuID;
//學(xué)生學(xué)號(hào)static
int
numberOfCourse;static
Course
[
]
list
;int[]stuScore;//每個(gè)學(xué)生對(duì)象的各課程成績//GPA值double
stuGPA;public
Student(){list=new
Course[numberOfCourse];for
(int
i=0;
i<numberOfCourse;i++)list[i]=new
Course();stuScore=new
int[numberOfCourse];}加static修飾符表明這個(gè)域?yàn)樗袑W(xué)生類對(duì)象共享Course類對(duì)象數(shù)組,用于設(shè)置每門課程名、課程學(xué)分66//將CourseNum定義成靜態(tài)屬性是因?yàn)樗粚?duì)靜態(tài)域進(jìn)行操作public
static
intCourseNum{get{set{return
numberOfCourse;
}numberOfCourse=value;
}//GPA屬性是只讀屬性}public
double
GPA{get{ return
stuGPA;
}//Name屬性可讀可寫}public
string
Name{getreturn
stuName;}{set{stuName=value;}}67//將SetCourse設(shè)為靜態(tài)方法,是因?yàn)樗鼉H訪問靜態(tài)數(shù)據(jù)域//不需要?jiǎng)?chuàng)建Student類對(duì)象就可直接用Student類名調(diào)用//它的形參是一個(gè)參數(shù)數(shù)組,這樣調(diào)用時(shí)就可根據(jù)實(shí)際選修的課程數(shù)來設(shè)置public
static
void
SetCourse(params
Course
[
]
topic){for
(int
i=0;
i<topic.Length
;
i++){list[i].Name
=topic[i].Name;list[i].Mark
=topic[i].Mark;}}//AddData方法將一個(gè)學(xué)生的數(shù)據(jù)添加到學(xué)生類對(duì)象數(shù)組中
public
void
AddData(string
name,
string
Id,
int[]score){stuName=name;stuID=Id;for
(int
i=0;i<score.Length;
i++)stuScore[i]=score[i];}68//根據(jù)課程的學(xué)分以及學(xué)生成績計(jì)算GPApublic
void
ComputeGPA()}{int
i;double
sMark,
sumMark=0,
sumGP=0;for
(i=0;i<stuScore.Length;i++){if
(stuScore[i]>=95)
sMark=4.5;else
if
(stuScore[i]>=90)
sMark=4;else
if
(stuScore[i]>=85)
sMark=3.5;else
if
(stuScore[i]>=80)
sMark=3;else
if
(stuScore[i]>=75)
sMark=2.5;else
if
(stuScore[i]>=70)
sMark=2;else
if
(stuScore[i]>=65)
sMark=1.5;else
if
(stuScore[i]==60)
sMark=1;else
sMark=0;sumGP+=list[i].Mark*sMark;sumMark+=list[i].Mark;}stuGPA=sumGP/sumMark;69//stuSwap方法提供兩個(gè)Student類對(duì)象的交換操作,注意形參被修飾為refpublic
void
stuSwap(ref
Student
stu1,ref
Student
stu2){string
name,Id;int
i;int
[]
score=new
int
[Student.CourseNum];double
gpa;name=stu1.Name;Id=stu1.stuID;gpa=stu1.GPA;f
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)三年級(jí)口算試題
- 電力設(shè)施升級(jí)合同(2篇)
- 2024-2025年高中化學(xué)課時(shí)分層作業(yè)7化學(xué)反應(yīng)速率的表示方法含解析蘇教版選修4
- 2024-2025學(xué)年新教材高中化學(xué)第二章海水中的重要元素-鈉和氯9氯氣的性質(zhì)練習(xí)含解析新人教版必修第一冊(cè)
- 一級(jí)警衛(wèi)接待方案
- 一年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃
- 人事專員年終工作總結(jié)
- 幼兒園健康促進(jìn)工作計(jì)劃范文
- 人事行政工作總結(jié)
- 酒店跟企業(yè)的合作協(xié)議
- DL-T-1846-2018變電站機(jī)器人巡檢系統(tǒng)驗(yàn)收規(guī)范
- 2025年高考語文作文備考:議論文萬能模板
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件(建筑)
- 《我的寒假生活》
- 陜2018TJ 040建筑節(jié)能與結(jié)構(gòu)一體化 復(fù)合免拆保溫模板構(gòu)造圖集
- DZ/T 0430-2023 固體礦產(chǎn)資源儲(chǔ)量核實(shí)報(bào)告編寫規(guī)范(正式版)
- (高清版)WST 442-2024 臨床實(shí)驗(yàn)室生物安全指南
- 歷史時(shí)間軸全
- 高速行業(yè)網(wǎng)絡(luò)安全與維護(hù)
- 2024年能源電力行業(yè)數(shù)字化轉(zhuǎn)型解決方案
- (2024年)房地產(chǎn)銷售人員心態(tài)培訓(xùn)
評(píng)論
0/150
提交評(píng)論