Spiral, polimorfism în Java
polimorfism vJava
Polimorfismul (din limba greacă - „comercial și multe forme.“).
interfețe Polimorfism. Interfețe descrie metodele pe care trebuie să fie puse în aplicare în clasă, și tipurile de parametri care trebuie să primească și să se întoarcă, fiecare membru al clasei, dar nu conțin o metode specifice de punere în aplicare, lăsându-l implementează clasa de interfață. Aceasta este interfețele polimorfismul. Mai multe clase pot implementa aceeași interfață, în același timp, o clasă poate implementa una sau mai multe interfețe. Interfețe sunt în afara ierarhiei moștenire de clasă, astfel încât acestea să elimine definiția unei metode sau un set de metode într-o ierarhie moștenire.
Polimorfism moștenire. Când moștenind clasa devine toate metodele de proprietăți și evenimente de clasă de bază, deoarece acestea sunt puse în aplicare în clasa de bază. Dacă este necesar, clasa derivată poate defini membri suplimentari sau suprascrie membrii moștenite de la clasa de bază pentru a le pune în aplicare în mod diferit. O clasă derivată poate pune în aplicare, de asemenea, interfețe. În acest caz, polimorfismul pare că funcționalitatea clasei de baza este prezentă în clasele derivate implicit. Funcționalitate poate fi extins și redefinit. Clasele derivate care efectuează această funcție să apară în rolul de mai multe forme.
Polimorfismul folosind clase abstracte. clase abstracte sprijină capacitățile de moștenire și de interfață. Atunci când construirea unei ierarhii complexe, pentru a oferi polimorfism, programatorii au de multe ori să introducă metode în clase de nivel superior, în ciuda faptului că aceste tehnici nu au fost încă determinate. O clasă abstractă - o clasă a cărei instanțe nu pot fi create; Această clasă poate servi doar ca o moștenire clasa de baza. Nu poți declara constructori abstracte sau metode statice abstracte. Unele sau toate dintre membrii acestei clase pot rămâne neîmplinită, punerea lor în aplicare ar trebui să se asigure că moștenește clasa. clase derivate care nu anulează toate metodele abstracte trebuie să fie marcate ca abstract. Clasa derivată poate pune în aplicare, de asemenea, interfețe suplimentare.
Metode de polimorfism clase diferite metode capacitatea de a sprijini punerea în aplicare cu același nume - un mod de a pune în aplicare polimorfism. Diferite implementari de metode cu același nume în Java se numește metoda suprasarcini. În limbile care nu suporta supraîncărcarea metodelor, fiecare metodă trebuie să aibă un nume unic. În practică, de multe ori trebuie să pună în aplicare aceeași metodă pentru diferite tipuri de date. Dreptul de a alege o anumită versiune a metodei furnizate de compilator.
Metode separate pentru acest polimorfism este o metode de polimorfism, cu un număr variabil de argumente introduse în Java 2 versiunea 5.0. Metodele Supraîncărcarea furnizate aici în mod implicit, adică Metoda se numește supraîncărcat cu un număr diferit de argumente, iar în unele cazuri, chiar și fără parametri.
Supraîncărcarea Metoda este de obicei strâns legată de sensul de operațiuni. Responsabil pentru construirea de metode și performanței omogene în sensul operațiunilor supraîncărcate revine cu dezvoltatorul.
Polimorfismul prin metode de suprascriere E metode de fuziune supraîncărcat cu același nume se află în aceeași clasă, listează parametrii să fie diferiți. Dar dacă metoda subclasă coincide cu metoda superclasei (generată de clasa), atunci metoda subclasă suprascrie metoda superclasei. Coincide cu numele nevoie și metoda și tipurile de parametri de intrare și de ieșire. În acest caz, o metodă de înlocuire este baza conceptului de legare dinamică (sau cu întârziere de legare) de punere în aplicare polimorfism. Esența metodelor de programare dinamice este că decizia de a apela metoda supracomandată adoptată în timpul rulării, mai degrabă decât la momentul compilarii. Cu toate acestea, -methods finale nu sunt redefinite, apelurile lor pot fi aranjate la momentul compilării și se numește devreme de legare.
Un exemplu care ilustrează tehnici de programare dinamice (Dispecerat fișier Java.):
System.out.println ( "Metoda CallME clasa A");