De ce interfețele overflow stivă în limba rusă

Prieteni, au cerut în mod repetat întrebări și a pus o întrebare aici sunt în cauză și este bântuit de gândul de ce avem nevoie de interfață în php, de exemplu.

Există grămezi de exemple în care a explicat doar că numai, ei cer structura dactilografiat dure pentru alte clase care implementează și sunt obligate să pună în aplicare metodele publice, dar bun, într-adevăr profit articole numai această brazdă pe interfețele au fost opiniile pe care le permit să ocolească moștenirea NEmnozhestvennoe, care este, cum? Explică-mi un exemplu de bază de comunicare așa cum se întâmplă?

Să presupunem că există o interfață cu o singură metodă. Implementarea claselor sale de a pune în aplicare la nevoile dvs. așa cum ar dori, dar peste tot în moduri diferite, și asta e tot? Să ne moștenită din clasa care implementeaza interfata, atunci ce?

Returnează șirul corespunzător, acesta este exemplul interfețelor?

Gândiți-vă la interfață ca un contract pentru clasa privind punerea în aplicare a unui număr de metode. A se vedea, nu au o parte din clasa care implementeaza interfata, si din clasele pe care le utilizează. În cazul în care o clasă implementează o interfață, celelalte clase vor fi siguri că această clasă are toate metodele enumerate în interfață, iar ei le pot folosi. Interfața poate duce la ușă ca un exemplu. Tot ce trebuie să știți programul, folosiți ușa. este că se poate deschide și închide. În acest caz, nu contează dacă este o ușă obișnuită, împărțită pe verticală DVE sau seif bancar ușă. În acest caz, diferența fundamentală din moștenirea în acest caz constă în faptul că clasa care implementează ușa de interfață. poate pune în aplicare alte interfețe, și chiar să fie moștenită de la o anumită clasă, evitând în același timp problemele de moștenire multiplă.

Despre moștenire multiplă. Să presupunem că avem A și B. Fiecare din clasele în care este implementat doSth () metoda. Acestea sunt moștenite de clasă C. în acest caz, apare o problemă: care metoda este invocată atunci când C.doSth () - A.doSth () sau B.doSth (). La urma urmei, ambele metode sunt moștenite, iar acum de fiecare dată când apelați C.doSth () pentru a specifica în mod explicit metoda de oricare dintre clasele strămoș de a utiliza. Destul de o altă problemă dacă interfețele A și B. Dacă clasa C implementează interfețele A și B. atunci este garantat a fi o metodă doSth (). în timp ce nu vor exista conflicte, deoarece interfețele nu pot pune în aplicare metodele.