Satura rādītājs
Polimorfisms ir abstraktas klases vai konkrēta objekta spēja reaģēt uz to pašu metodi ar savu uzvedību. Polimorfisms nosaka, ka nodotam vai gaidītajam parametram vai objektiem var būt vairākas formas un atšķirīga rīcība, izmantojot tās pašas metodes.Veicot uz objektu orientētu programmēšanu ar polimorfismiem, mums jāpatur prātā, ka var atsaukties uz klases vai objekta gadījumu un tas darbosies un darbosies vienādi neatkarīgi no klases, kurai objekts pieder. Ja mums ir daudz klašu un objektu, mums ir labi jāstrukturē klases un abstraktās klases. Vēl viena priekšrocība ir iespēja deklarēt vai programmēt metodes ar tādu pašu nosaukumu, lai gan to funkcionalitāte ir pilnīgi atšķirīga, jo mēs atsaucamies uz klases gadījumu.
Piemēram, pieņemsim abstraktu klasi, kas atspoguļo transportlīdzekļu skaitu, kuriem kopīgi dati ir kopīgi degvielas līmenis, marka un transportlīdzekļa modelis.
Transportlīdzekļu klases īpašības tad būs degviela, kas saturēs transportlīdzeklī iekrauto litru skaitu un zīmolu un modeli transportlīdzeklis.
Tālāk mēs definējam kopējās metodes visiem transportlīdzekļiem, kuros tiks iekrauta degviela, un parādīsim, cik daudz ir atlicis tās izlietot, turklāt mums jāspēj katram transportlīdzeklim piešķirt marku un modeli, kā arī jāspēj iepazīties ar tā marku un modeli. . Tālāk mēs definējam Vehicles klases metodes.
degviela = $ degviela; } publiskās funkcijas rādīt degvielu () {atgriezt $ šo-> degvielu; } publiskas funkcijas piešķiršanas transportlīdzeklis ($ zīmols, $ modelis) {$ this-> brandymodel = $ brand. ' '. $ modelis; } publiska funkcija showbrandmodel () {return $ this-> markandmodel; }}?> var13 ->Tad mēs sāksim veidot klases, kas pārmantojas no transportlīdzekļiem, un tām būs savas metodes, piemēram, mēs izveidosim automašīnu klases, tai būs īpašums virzīt automašīnu uz priekšu, un katru reizi, kad tā dosies uz priekšu, tā patērēs litru degvielas (lai vingrinājums būtu viegli saprotams)
klase Automašīnas pagarina Transportlīdzeklis {publiskās funkcijas avanss () {// ik pēc 10 kilometriem patērē litru $ šis-> degviela - = 1; }} // Beigt klasiTagad mēs ieviesīsim vispārēju klasi transportlīdzekļa vadītājam, šeit mēs ņemam vērā, ka viens vadītājs vai vairāki var vadīt dažādus transportlīdzekļus.
Šajā klasē mēs definēsim vispārēju vai abstraktu konstruktoru
funkcija __konstruēt ($ object_parameter) {$ this-> myobject = $ object_parameter}Tātad mēs varam manipulēt ar jebkuru objektu, kas tiek nodots kā konstruktora parametrs, tāpēc mūsu klasei būs iespēja objektu saņemt kā parametru, tas ir polimorfisms, tas ir, tā var izmantot pilnus objektus, piemēram, mēs varam nosūtīt klases autos kā parametru un izmanto visas to metodes.
Mēs īstenosim php 5 piemērus, tāpēc ir svarīgi atcerēties metodes darbības jomu un mainīgos, lielākajā daļā valodu tā ir ļoti līdzīga. Lai piešķirtu vai mainītu mainīgā vai rekvizīta darbības jomu, mums ir jāizmanto atbilstošais rezervētais vārds, kad deklarējam mainīgo vai metodi saskaņā ar piekļuvi vai darbības jomu, kādu mēs vēlamies, lai tam būtu:
- Privāts: norāda, ka mainīgajam vai metodei var piekļūt tikai ar tās klases metodēm, kurai objekts pieder, nevis no jebkuras citas.
- aizsargāts: norāda, ka mainīgais vai metode ir pieejama ar metodēm un, kā arī no jebkuras tās apakšklases, kas pieder šai klasei.
- publiski: norāda, ka mainīgie vai metodes ir pieejamas no jebkuras citas metodes vai neatkarīgi no tā, kur tā pieder vai kam tā pieder. Esiet piesardzīgs ar publiskajiem atribūtiem, jo tie var mainīt vērtību, ko izmanto arī cita klase vai cita metode.
Tālāk mēs izveidojam vadītāju klasi, kurai būs šādas metodes: ielādēt degvielu, piešķirt transportlīdzekli, apskatīt marku un modeli, pārvietot transportlīdzekli un pārbaudīt atlikušo degvielu tās progresēšanas laikā.
transportlīdzeklis = $ objekts; } sabiedriskās funkcijas degvielas slodze ($ degviela) {$ this-> transportlīdzeklis-> degvielas slodze ($ degviela); } publiska funkcija piešķirt transportlīdzekli ($ marka, $ modelis) {$ this-> vehicle-> assignvehicle ($ marka, $ modelis); } publiskās funkcijas zīmolmodelis () {atgriezties $ šis-> transportlīdzeklis-> šovbrendmodelis (); } publiska funkcija avansvehicle () {$ šis-> transportlīdzeklis-> avanss (); } publiskās funkcijas degvielas atlikums () {atgriešanās $ šis-> transportlīdzeklis-> rādīt degvielu (); }}?> var13 ->Mēs varam redzēt, kā katrā automašīnu klases funkcijā mēs paraugām Super Vehicles klases parastās metodes, lai piešķirtu īpašības vai metodes, kas ir īpašas un nav kopīgas visiem transportlīdzekļiem.
Tālāk redzēsim, kā izmantot šīs klases un pašu polimorfismu.
piešķirt transportlīdzekli (“Ferrari”, “550 MARANELLO”). ”Tālāk aplūkosim polimorfisma un klases mantojuma patiesās priekšrocības, pievienosim klasi
'; // Mēs parādām piešķirto transportlīdzekli echo $ ferrari-> brandymodel (). '
'; // Mēs ielādējam degvielu transportlīdzeklī, norādot daudzumu litros, atkārtojot 'Degvielas slodze'. $ Ferrari-> degvielas slodze (50). '
'; // Mēs parādām pašreizējo degvielas daudzuma atbalsi 'Pašreizējā degviela'. $ Ferrari-> atlikušā degviela (). ' litri
'; echo 'Avansa transportlīdzeklis
'; $ ferrari-> avansVehicle (); echo $ ferrari-> brandymodel (). ' jums ir '. $ ferrari-> atlikušā degviela ().' litri degvielas
'; // Mēs izveidojam citu instanci ar citu transportlīdzekli, piemēram, mēs varam izveidot mainīgo, kas ir zīmols un patents $ hondaHB0071 = new Driver (new Autos); echo $ hondaHB0071-> assignvehicle ('Honda', 'ACCORD'). '
'; echo $ hondaHB0071-> makeandmodel (). '
'; echo 'Degvielas slodze'. $ hondaHB0071-> degvielas slodze (50). '
'; echo 'Pašreizējā degviela'. $ hondaHB0071-> atlikušā degviela (). ' litri
'; echo 'Advance Honda transportlīdzeklis
'; $ hondaHB0071-> avansVehicle (); echo $ hondaHB0071-> makeandmodel (). ' jums ir '. $ hondaHB0071-> atlikušā degviela ().' litri degvielas
'; ?> var13 ->
// Motociklu klase Motocikli pagarina Transportlīdzeklis {publiskās funkcijas avanss () {// ik pēc 10 kilometriem tiek patērēts litrs $ this-> degviela - = 1; }} $ moto = jauns vadītājs (jauni motocikli); echo $ moto-> piešķirt transportlīdzekli ('Yamaha', 'YBR 125'). '
'; echo $ moto-> makeymodel (). '
'; echo 'Degvielas slodze'. $ motocikls-> degvielas slodze (10). '
'; echo 'Pašreizējā degviela'. $ moto-> atlikušā degviela (). ' litri
'; echo 'Attīsta motociklu
'; $ moto-> avanssTransportlīdzeklis (); echo $ moto-> makeymodel (). '' jūs esat atstājis '. $ moto-> fuelremaining ().' litri degvielas
'; ?> var13 ->
Mēs varētu iekļaut nepieciešamos aprēķinus, lai padarītu degvielas patēriņu reālāku atbilstoši transportlīdzeklim.
Polimorfisma izmantošanas priekšrocība ir tā, ka mēs varam izveidot līdzīgas metodes, bet, piemēram, ar dažādiem parametriem.
Saskarņu ar pHp ieviešana
Saskarnes ir deklarācijas, kas nosaka, kādas metodes var īstenot klase, slēpjot, kā šīs metodes tiek izmantotas vai pārvaldītas. Metodēm, kas ir deklarētas saskarnē, jābūt publiskām, lai tām varētu piekļūt mūsu ieviestās klases. Tie ļauj iekapsulēt klases un polimorfismus.
Lai ieviestu saskarni ar php, tiek izmantots atslēgvārds implementē. Ja saskarnē mums ir deklarētas vairākas metodes, tās jāievieš klasē. Klases var ieviest vairāk nekā vienu saskarni, lai varētu piekļūt dažādām metodēm, lai dažādās klasēs mums būtu dažādas funkcijas.
Mēs redzam saskarņu piemēru
Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu