Danh mục tài liệu

Bài 5: Kế thừa – Đa hình

Số trang: 21      Loại file: ppt      Dung lượng: 125.50 KB      Lượt xem: 19      Lượt tải: 0    
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mục tiêu của bài:Nhằm trang bị cho người học:Kiến thức và kỹ năng về tính thừa kế.Kiến thức và kỹ năng về tính đa hình.Các kiến thức về lớp trừu tượng.Kiến thức và kỹ năng về các phương thức, các thành phần static.Kiến thức và kỹ năng về tham số và các phương thức nạp chồng.Kiến thức và kỹ năng về thuộc tính.
Nội dung trích xuất từ tài liệu:
Bài 5: Kế thừa – Đa hình Bài 5. Kế thừa – Đa hìnhMục tiêu của bài:Nhằm trang bị cho người học:Kiến thức và kỹ năng về tính thừa kế.Kiến thức và kỹ năng về tính đa hình.Các kiến thức về lớp trừu tượng.Kiến thức và kỹ năng về các phương thức, các thành phần static.Kiến thức và kỹ năng về tham số và các phương thức nạp chồng.Kiến thức và kỹ năng về thuộc tính. 1. Sự kế thừa Mộttrongnhữngưuđiểmnổibậtcủalậptrìnhhướngđốitượngđólàthừakế,đólàsựsửdụnglạinhữngthuộctínhvàhànhvicủamộtlớp.Cóhaikiểukếthừatronglậptrình,đơnkếthừavàđakếthừa.C#cungcấpmôhìnhđơnkếthừa.Thựchiệnkếthừa TrongC#,khitatạomộtlớpkếthừabằngcáchcôngmộtthêmdấu“:”vàsautêncủalớpkếthừavàtheosauđólàlớpcơsởnhưsau:publicclassListBox:WindowcónghĩalàtakhaibáomộtlớpmớiListBoxkếthừatừlớpWindow.classAnimal 1. Sự kế thừa{protectedintifoots;protectedstringsName;protectedvoidsetFoot(intival){ifoots=ival;}protectedvoidsetName(stringsVal){sName=sVal;}publicvoiddisplayProperties(){Console.WriteLine(sName+have+ifoots.ToString()+foots);}classDog:Animal 1. Sự kế thừa{publicDog(intival){setName(Dog);ifoots=ival;}}classChicken:Animal{publicChicken(intival){setName(Chicken);setFoot(ival);} 1. Sự kế thừa Ởvídụtrên,DogvàChickenlàhailớpkếthừatừlớpAnimal,dođócácthuộctínhnhưsốchân,ifootsvàtênsNameđươngnhiênxuấthiệntronghailớpnàyvàchophépsửdụng.Tươngtự,cáchàmnhưsetName(),setFoot(),displayProperties()tạilớpAnimalcũngđượckếthừaxuốnghailớpDogvàChicken.Dođótacóthểgọinhữnghàmnày,vàkếtquảhiểnthịkhigọihàmdisplayProperties()theođốitượngobjDogvàobjChickenlàkhácnhau. 2. Đa hìnhclassParent{publicintmethodA(){returnmethodB()*methodC();}publicvirtualintmethodB(){return1;}publicintmethodC(){return2;}}classChild:Parent 2. Đa hình{publicoverrideintmethodB(){return3;}}classProgram{staticvoidMain(string[]args){Childobjchild=newChild();Console.WriteLine(Resultis+objchild.methodA().ToString());Console.Read();}} 2. Đa hìnhKếtquảchạytrươngtrình 6 3. Lớp trừu tượngabstractclassMyBaseC//Abstractclass{protectedintx=100;protectedinty=150;publicabstractvoidMyMethod();//AbstractmethodpublicabstractintGetX//Abstractproperty{get;}publicabstractintGetY//Abstractproperty{get;}} 3. Lớp trừu tượngclassMyDerivedC:MyBaseC{publicoverridevoidMyMethod(){x++;y++;}publicoverrideintGetX//overridingproperty{get{returnx+10;}}publicoverrideintGetY//overridingproperty{get{returny+10;}} 3. Lớp trừu tượngclassProgram{staticvoidMain(string[]args){MyDerivedCmC=newMyDerivedC();mC.MyMethod();Console.WriteLine(x={0},y={1},mC.GetX,mC.GetY);}}}Kếtquả:x=111,y=161Lớpniêmphongvớiýnghĩatráingượchẳnvớilớptrừutượng.Lớpniêmphongkhôngchobấtkỳlớpnàokháckếthừanó.Tadùngtừkhoásealedđểthaychotừkhoáabstractđểđượclớpnày. 4. Các lớp lồng nhaupublicclassA{publicclassB{}}classProgram{staticvoidMain(string[]args){A.Bb=newA.B();}} 4. Các lớp lồng nhauclassMyClass{classMyCounter{publicintCount=0;}privateMyCountercounter;publicMyClass(){counter=newMyCounter();}publicintIncr(){returncounter.Count++;}publicintGetValue(){returncounter.Count;}} 4. Các lớp lồng nhauclassProgram{staticvoidMain(string[]args){MyClassmc=newMyClass();mc.Incr();mc.Incr();mc.Incr();mc.Incr();mc.Incr();mc.Incr();Console.WriteLine(Total:{0},mc.GetValue());}}//Kếtquả:Total:6 4.1.1 Truyền tham trị+Truyềnthamchiếukhôngkhởitạo publicclassThamChieuref { staticvoidMethod(outinti,outstrings1,outstrings2) { i=44; s1=Ivebeenreturned; s2=null; } staticvoidMain() { intvalue; stringstr1,str2; Method(outvalue,outstr1,outstr2); } } ...