Explicați că acest polimorfism în cuvinte simple,

Aproximativ Polimorfism în orice caz, nu pot fi luate în considerare separat de celelalte concepte fundamentale - abstractizare, încapsulare, și moștenirea. Obiectul și altele asemenea sunt atașate de axiomele (deși acest lucru este ceva prea axiome).

De fapt, imaginați-vă următoarea cupă, halbă, ibric, masina de cafea, biciclete și patina. Ce au în comun? Ei bine, cel puțin ceea ce sunt. Asta este - obiectele care au fost create. Dar cum au fost ele create? Cel mai probabil, la desene ale producătorului fabricii. Ok, hai să numim designer de chertezhom. Ei bine, clasa? Și ce este? Și nu este în universul nostru - această entitate este o abstracție care trăiește numai în gândurile noastre. În lumea reală nu există și nu va, astfel este fizica - o pe tamburul că păsările și mamiferele au rude îndepărtate - permite doar de selecție Estesstvenno. Și rudele reciproc găsim oameni.

Cu obiecte și clase, înțeles, și ceea ce este acolo cu ochelari și bicicletele noastre. Ne-am dat seama că totul este un obiect, care este, poate fi aproximativ toate obiectele moștenesc de la orice superpredka, superclasa, și a realizat că, în unele limbi. Dar ce altceva este comun între patina și sticlă, de exemplu? Desigur, este posibil să se adâncească și să presupunem că acestea sunt toate făcute din molecule, iar acestea sunt toate solidele. Cu toate acestea, acest lucru este tot un nonsens, și SRSG. astfel încât răspunsul este simplu - da nimic. Asta este, ele sunt obiecte complet diferite, cu funcționalitate complet diferite. Mai mult decât atât - estesstvenno modele computerizate și ierarhii sunt foarte diferite de fizica si biochimice. Și este normal, problema caracterului adecvat al modelului pus numai atunci când modelul este inadecvat, iar până atunci vă puteți tăia orice, doar pentru a lucra.

Aici. Avem un super-strămoș al obiectului, al cărui credit default moștenită de toate obiectele. Să presupunem că obiectele sunt compuse din atomi, și există ca toate obiectele moștenesc. Dar toate completările și modificările - polimorfismului. Deci, de la atomii suntem orbi și au atașat roțile la bord - OK, această patina. Pe aceasta puteți obține în sus și de rulare, și mult izvernuvshis și acoperi trei metri deasupra solului, în mod direct încă radiind ego-ul său luminos. In timp ce sticla - suntem orbiti de atomi container etanș, din care apa este turnat prin gravitație. Și aplicarea directă a sticlei - turnarea de apă să-l răstoarne peste gura la apa curgea direct în stomac. Deci, ce fac băieții ăștia nu le pasă sughiț sau teama de înec, așa că aici - polimorfism.

Dar cum rămâne cu restul? Noi încă o abstracție, încapsulare, și moștenire. Ok, să începem cu moștenirea, pentru că cel mai bine. Asta e ceea ce avem în comun între sticlă și o cană? Ei bine, ambele pot fi turnat în apă, dar cluburile au un mâner de a deține. Asta este, puteți veni cu o clasă generală - capacitate. Cu toate acestea, ceea ce este această clasă? De exemplu, puteți lua un pahar din această clasă, atunci toate containerele cu ochelari implicit, și orice altceva - un ochelari modificate. Dar cineva ca mult mai mult decât ulcioarele, de exemplu, unele Chiki Nasyat-le pe cap, crezând că este convenabil. Ei bine, să-l poarte, dar într-un fel este necesar să se decidă ce este mai important și ideal. Deci - ideală este nedostyazhimy principal - aceasta se numește o clasă abstractă. Adică, capacitatea care nu poate fi creat, pentru care există un desen complet. Și toate desenele care au adăugat până la o completă - nu moștenesc o clasă din container de clasă.

Aici am ajuns la abstractizare. Aici este o moștenire ierarhică ce ne duce la ideea principală, probabil, OEP. Aici am identificat și toate, în cazul în care vă puteți turna apă într-o clasă separată, a atras un plan general, dar mai ales nu-l termin, lăsând un spațiu pentru artiști viitoare, și a numit desenul - rezervor. Mii de ani izobretatili toate lumile crea propria lor capacitate, unul mai bun decât celălalt. Pentru persoane diferite - în moduri diferite, desigur. Dar, de fiecare dată când grupul de molecule de sticlă într-un anumit fel - nu este o sarcină ușoară. Prin urmare, meșterii au mers la truc, au creat consiliul secret al artizanilor de pace și a decis să împartă cu o alta experienta lor. Aceasta este de a crea desene mici și să declare o clasă, de exemplu, sub formă de mânere izvlistoy benzi Mobius, de exemplu. Poate că un astfel de mâner convenabil doar ființe extraterestre, dar desenul este creat și vă puteți referi la ea când vă creați desenul. Astfel, abstracție de sarcinile de nivel scăzut „care formează containere de molecule în mișcare“ pentru a „capacității de proiectare, prin combinarea piese, elemente“. Aceasta este o abstracție.

Dar am ajuns la ultimul punct - încapsulare. Acesta este inseparabilă de abstractizarea, și, de fapt, din cauza că ea funcționează. Încapsularea - l adeziv svoeborazny (albastru sau bandă izolatoare) este lipită diverse desene într-o singură. Aceasta este, combinația de piese pentru a crea sale - aceasta este încapsulare. Mai mult decât atât, atunci când sunt combinate, nu putem descrie detaliile acestei combinații (de exemplu, membrii clasei pot fi private), ajutând astfel să ignore pe cei care folosesc acest desen. Iată o privire la ceai - ce este? Este un pahar (sau cana), la care partea de jos (sau, poate, în mijloc?) Element de încălzire prelucrate din lemn. Scăparea pe acesta un curent în conformitate cu dreptul elementului de încălzire capsulate lui Ohm, va genera căldură și pentru încălzirea apei. O mașină de cafea? Acesta este un dispozitiv mult mai complex, cu mai multe pompe, rezervoare, ecluze, choppers și fierbătoare. Și toate lipite cu un lipici. O cutie de bandă albastră. Aceasta din nou de încapsulare.

Astfel, abstractizarea este imposibilă fără încapsulare și moștenirea, polimorfismul este imposibilă fără atât, de fapt, moștenire. Dar polimorfismul este imposibil chiar și fără încapsulare, care este banală inutil, fără moștenire și polimorfism. Acestea sunt apoi triunghiuri cu plăcinte. Păcat numai despre tortul mințit. Și despre ziua de naștere.

Polimorfismul indică ce versiune a metodei obiectului curent pentru a începe.
De exemplu, aveți un număr de clase diferite moștenite cu punerea în aplicare a aceleiași metode. Asta este, aveți un număr de metode diferite cu același nume (și semnătura), puse în aplicare în diferite clase. Ce versiune a apelului metodei? Depinde de tipul de variabila care conține obiectul.
De asemenea, folosind polimorfism pot pune obiecte de diferite clase într-o singură matrice cu tipul clasei de bază.

Vom crea trei clase cu două metode - una virtuala si una nu este. Metoda virtuală suprascrisă (suprascrie) în clasa derivată. Metoda non-virtuală este pur și simplu ascuns în mostenitorii noua implementare (non-virtuală nu poate trece peste).

Atunci când este creat un obiect, este important să o variabilă de tipul obiectului care urmează să fie înregistrate:


Și acum o situație frecventă atunci când este nevoie de polimorfismului - la matrice de repetare:

Moștenirea fără metoda virtuală este doar interfața de fixare utilă.

Aici sunt toate codul de probă: code.re/5ZC
Inserați-l aici și să verificați.

Există 4 clase - un punct de clasă, forme abstracte, care sunt moștenite de la cerc și dreptunghi

Explicați că acest polimorfism în cuvinte simple,

> 1. Number.prototype.toString () și Object.prototype.toString () - este un polimorfism sau nu?
Nu, ce ai scris - nu polimorfism, sunt metode în încorporate limbaj de obiecte. întrebare incorectă. La punerea în aplicare a toString Numărul de clasă, altele decât obiect. Dacă toString în obiecte de diferite clase, va exista un polimorfism.
În cazul în care metoda toString să pună în aplicare în clasa sa, acesta va fi utilizarea polimorfismului. De exemplu, în cazul în care codul terță parte are diferite obiecte și le dă metoda pentru propriile sale scopuri, ar fi o manifestare a polimorfism.

> 2. Date.prototype.hasOwnProperty () și Object.prototype.hasOwnProperty () - aceasta este moștenirea sau nu?
Din nou, aceasta este o metodă simplă, așa că nimeni nu solicită. Deoarece clasa Data nu are metoda sa de implementare hasOwnProperty-l moștenește de la obiect. Deci, da - această moștenire.

Explicați că acest polimorfism în cuvinte simple,

Aici este metoda implementată în constructorul String fromCharCode. Dar această metodă se numește static și poate fi invocat direct de proiectant. În orice linie, această metodă nu poate fi numit. Prin urmare, la întrebarea în cauză, această implementare nu este relevantă.

Operezi conceptele de „clasă“ și „metoda de clasă“, deși este necesar să se utilizeze „prototip“ și „proiectant“.

Aceasta este exact ceea ce se face în raport cu toString Number prototip constructorului. Deci, întreb din nou:
Number.prototype.toString () și Object.prototype.toString () - este un polimorfism sau nu?

Din nou, aceasta este o metodă simplă, astfel încât nimeni nu este
Într-adevăr?)) Și noi nu am știut. Această metodă (nu metode), numit în fiecare obiect creat, tocmai pentru că acestea sunt puse în aplicare în prototip.

Explicați că acest polimorfism în cuvinte simple,

@lexxpavlov nu, nu cred că ați făcut o greșeală, altfel l-ar scrie :) voi explica poziția mea:

2) cum ar fi „metoda virtuală“ termeni necesită explicații. Am scris despre diferite metode de punere în aplicare, pentru că ei nu înțeleg - ce vrei să spui?

@Petroveg Ei bine, lasă-mă să spun asta.
limbi statice există două tipuri de metode - convenționale și virtuale. Polimorfism în ele este doar virtuală. Ce este virtuală - am încercat să explic în răspunsul său.
În limbaje dinamice metode de „convenționale“ nu este - nu există decât cele care sunt statice sunt numite virtuale.

> 1) Punerea în aplicare a încapsulare, moștenire și polimorfism în fiecare limbă este diferit
Dreapta. De aceea ai nevoie (nevoie!) Pentru a înțelege principiile generale și nu de punere în aplicare a acestora într-o anumită limbă. Eu, ca profesor, a încercat să arate un principiu mai general, și a subliniat că, într-o anumită limbă, este pus în aplicare ca (de acord că trecerea de la general la .js-am arătat rău - face acum o actualizare a contului dvs.).

> 2), cum ar fi „metoda virtuală“ termeni necesită explicații.
Necesită. Am încercat să le explic în răspunsul său, dar se pare așa de rău. Din nou - a se vedea actualizarea ..

Explicați că acest polimorfism în cuvinte simple,

@lexxpavlov ca un profesor să spun că, uneori, nu spune imaginea completă pe întreaga adâncime. Acesta poate fi rezumată prin acordarea teoria link-uri și alte implementări. Imaginați-vă dacă sunteți în secolul al XV-lea au vorbit despre telescoape radio și teoria optice adaptive la întrebarea „De ce sunt aceste pete luminoase nu se mișcă pe cer?“.

Acest lucru toate răspunsul dumneavoastră în mod clar și precis, și aș plasa ascultătorul a dat seama că imaginea, și în studiul de aceeași C # să se uite la aceleași probleme într-o lumină diferită.

articole similare