Danh mục

Bài 5 Tính đa hình Polymorphism)

Số trang: 5      Loại file: doc      Dung lượng: 52.00 KB      Lượt xem: 11      Lượt tải: 0    
10.10.2023

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Phươngthứccủalớpchakhithựchiệnsẽđượcthaythếbằngmộtphươngthứccủalớpconthì.phươngthứcnàygọilàcótínhđahình.Tínhđahìnhgiúpchoviệclậptrìnhđơngiảnvàdễmởrộng..Đểcàiđặtphươngthứccótínhđahìnhtadùngphươngthứcảovàphươngthứcthuầnảo.
Nội dung trích xuất từ tài liệu:
Bài 5 Tính đa hình Polymorphism)BÀI5:TÍNHĐAHÌNH(Polymorphism)1. KháiniệmPhươngthứccủalớpchakhithựchiệnsẽđượcthaythếbằngmộtphươngthứccủalớpconthìphươngthứcnàygọilàcótínhđahình.Tínhđahìnhgiúpchoviệclậptrìnhđơngiảnvàdễmởrộng.Đểcàiđặtphươngthứccótínhđahìnhtadùngphươngthứcảovàphươngthứcthuầnảo.2. Phươngthứcảo(virtualmethod) Phươngthứcảolàphươngthứcđượcđịnhnghĩaởlớpcơsở(lớpcha)màcáclớpdẫnxuất(lớpcon)muốnsửdụngphảiđịnhnghĩalại.Dùngtừkhoávirtualđểkhaibáophươngthứcảo:virtual(){…}Phươngthứckhởitạokhôngđượclàphươngthứcảonhưngphươngthứchủybỏcóthểlàphươngthứcảo.Dùngphươngthứcảochậmhơnphươngthứcthôngthườngvìkhithựchiệnmớiđượcxácđịnhcụthể.Vídụ:#includeclassA{ public: virtualvoidchao() //phươngthứcảo { cout }};classC:publicA{ public: voidchao() { coutchao(); //goichaocuaB Cc; pa=&c; pa>chao(); //goichaocuaC}Nhậnxét: - Phươngthứcchao()cótínhđahình:cùnglờigọipa>chao()nhưnglần1gọichaocuaA,lan2 gọichaocuaB,lan3goichaocuaC. - NếutronglớpB,CkhôngđịnhnghĩalạiphươngthứcchàothìcảbalầnđềugọichàocủaA. - Nếuphươngthứcchao()tronglớpAkhôngkhaibáovirtualthìphươngthứcchao()sẽkhôngcó tínhđahình,khiđócảbalầnđềugọichàocủaA. - Cóthểgánđịachỉcủađtthuộclớpconvàobiếncontrỏ,trỏtớiđtthuộclớpchanhưngkhông thểlàmngượclại(ápdụngnguyêntắc“congánvàocha”đốivớibiếnkiểuđốitượnghoặc biếnkiểucontrỏ,trỏtớiđốitượng)3. Phươngthứcthuầnảo,lớptrừutượngPhươngthứcthuầnảolàphươngthứcảonhưngkhôngcólệnh(phươngthứcrỗng).Phươngthứcthuầnảocódạng:virtual()=0; 2Lớpcóphươngthứcảogọilàlớptrừutượng(abstractclass).Nếumộtlớpthừakếlớptrừutượngmàkhôngđịnhnghĩalạiphươngthứcthuầnảothìlớpthừakếcũnglàlớptrừutượng.Lưuýlàkhôngđượctạođốitượngthuộclớptrừutượng.Thườngtachọnphươngthứcởlớpcha,màchưathểxácđịnhcáchthựchiện,làmphươngthứcthuầnảo.Ởlớpcontasẽđịnhnghĩalạiphươngthứcthuầnảo,đểxácđịnhcụthểcáchthứcthựchiện.Vídụ:Nhậpmộtdanhsáchgồmgiảngviênvàsinhviên,inradanhsáchnhữngngườiđượcthưởng.Biếtrằngđiềukiệnđượcthưởnglàgiảngviêncósốbàibáo>3,sinhviencóđiểmthitốtnghiệp>8.#includeclassnguoi{ charhoten[30]; public: virtualvoidnhap() //phươngthứcảo { cout { cout cout

Tài liệu được xem nhiều: