Atšķirība starp statisko un dinamisko iesiešanu

Satura rādītājs:

Atšķirība starp statisko un dinamisko iesiešanu
Atšķirība starp statisko un dinamisko iesiešanu

Video: Atšķirība starp statisko un dinamisko iesiešanu

Video: Atšķirība starp statisko un dinamisko iesiešanu
Video: Static vs Dynamic binding in Programming language 2024, Jūlijs
Anonim

Galvenā atšķirība - statiskā saistīšana pret dinamisko saistīšanu

Programmēšanas valodas, piemēram, Java un C, atbalsta objektorientēto programmēšanu (OOP). Tas ļauj izveidot programmatūru, izmantojot objektus. Programmatūras sistēmā vai programmā ir daudz objektu. Šiem objektiem ir atribūti un metodes. Atribūti raksturo īpašības. Metodes apraksta darbības, kuras objekts var veikt. Dati tiek nodoti caur objektiem, izmantojot metodes. Nepieciešamās vērtības tiek nosūtītas, izmantojot metožu izsaukumus ar parametriem. Faktiskā metodes ieviešana ir metodes definīcijā. Pastāv saikne starp metodes izsaukumu un metodes definīciju. Tas ir pazīstams kā saistošs. Ir divu veidu stiprinājumi. Tie ir statiski saistoši un dinamiski saistoši. Galvenā atšķirība starp statisko saistīšanu un dinamisko saistīšanu ir tāda, ka statiskajā saistīšanā saistīšana tiek atrisināta kompilēšanas laikā, savukārt dinamiskā saistīšana tiek atrisināta izpildes laikā, kas ir faktiskais izpildes laiks. Šajā rakstā ir aplūkota atšķirība starp šiem diviem saistošajiem mehānismiem.

Kas ir statiskā iesiešana?

Saistīšana ir saikne starp metodes izsaukumu un metodes definīcijām.

Atšķirība starp statisko iesiešanu un dinamisko iesiešanu
Atšķirība starp statisko iesiešanu un dinamisko iesiešanu

Attēls 01: Statiskā iesiešana un dinamiskā iesiešana

Skatiet tālāk norādīto programmu, kas rakstīta Java valodā.

publiskā klase A{

publiski spēkā neesoša metode1(){

System.out.println(“1. metode”);

}

public Void method2(){

System.out.println(“2. metode”);

}

public static void main(String args){

A obj=jauns A();

obj.method1();

obj.method2();

}

}

Saskaņā ar augstāk minēto programmu tiek izveidots A tipa objekts. Tad tiek izsaukta metode1 un metode2. Identificēšana, kura metode ir jāizsauc izpildei, tiek dēvēta par saistošu. Paziņojums obj.method1() izsauks metodi 1() un obj.method2() izsauks metodi 2(). Šī saite ir saistoša.

Statiskajā saistīšanā iesiešanu kompilēšanas laikā atrisina kompilators. To sauc arī par agrīnu iesiešanu. Saistīšana notiek, pirms programma faktiski tiek palaista. Metodes pārslodzes gadījumā rodas statiskā saistīšanās. Skatiet tālāk norādīto programmu, kas rakstīta Java valodā.

publisks spēkā neesošs aprēķins{

publiskā spēkā neesošā summa(int x, int y){

System.out.println(“Summa ir “, x+y);

}

publiskā spēkā neesošā summa(dubultā x, dubultā y){

System.out.println(“Summa ir “, x+y);

}

public static void main(String args){

Aprēķins cal=jauns aprēķins();

cal.sum(2, 3);

cal.sum(5.1, 6.4);

}

}

Saskaņā ar iepriekš minēto programmu, nododot divus veselus skaitļus, tiks izsaukta metode ar diviem veseliem skaitļiem. Nododot divas dubultās vērtības, tiks izsaukta metode, kas atbilst divām dubultvērtībām. Šis saistīšanas process notiek apkopošanas laikā. Kompilators zina, ka tam vajadzētu izsaukt summas metodi ar divām veselām vērtībām cal.sum(2, 3). Attiecībā uz cal(5.1, 6.4) tas izsauks summas metodi ar divām dubultām vērtībām. Visa nepieciešamā informācija ir zināma pirms izpildes laika, tāpēc tas palielina programmas efektivitāti un izpildes ātrumu.

Kas ir dinamiskā iesiešana?

Dinamiskajā saistīšanā kompilators neatrisina saistīšanu kompilēšanas laikā. Saistīšana notiek izpildes laikā. To sauc arī par vēlu iesiešanu. Dinamiskā saistīšana notiek metodes ignorēšanas gadījumā. Skatiet programmu, kas rakstīta Java valodā.

publiskā klase Forma(){

publiski anulēt izlozi(){

System.out.println(“Zīmēt formu”);

}

}

publiskā klase Circle() paplašina formu{

publiski anulēt izlozi(){

System.out.println(“Zīmēt apli”);

}

}

publiskā klase Trijstūris() paplašina formu{

publiski anulēt izlozi(){

System.out.println(“Zīmēt trīsstūri”);

}

}

publiskās klases ieskaite{

public static void main(String args){

Forma s;

s=jauna forma();

s.draw();

s=jauns loks();

s.draw();

s=jauns trīsstūris();

s.draw();

}

}

Saskaņā ar iepriekš minēto programmu, klasei Shape ir metode draw(). Klases aplis un klases trīsstūris paplašina formas klasi. Klases aplis un klase trīsstūris var mantot klases Shape atribūtus un metodes. Tāpēc klase Shape ir superklase vai vecāku klase. Klases aplis un klases trīsstūris ir apakšklases vai atvasinātas klases. Šīm klasēm ir arī draw() metode ar savām implementācijām. Tāpēc superklasē metode draw() tiek ignorēta.

Galvenajā metodē tiek izsaukti dažādi objekti. Ir Shape tipa atsauces mainīgais, kas ir s. Pēc tam s izsauc metodi atbilstoši konkrētajai klasei. Kompilēšanas laikā kompilators atsauksies tikai uz superklases izlozes metodi. Kad sāksies faktiskā izpilde, tiks izpildītas dažādas izlozes metodes. Pirmkārt, s norādīs uz Shape tipa objektu. Tāpēc tas izsauks zīmēšanas metodi Shape klasē. Tad s norādīs uz Circle tipa objektu, un tas izsauks Circle klases zīmēšanas metodi. Visbeidzot, s atsauksies uz objektu, kura tips ir Triangle, un tas izsauks zīmēšanas metodi klasē Triangle. Pat ja atsauces mainīgajam ir tips Shape, saistīšana ir atkarīga no objekta veida. Šis jēdziens ir pazīstams kā dinamiskā saistīšana. Informācija tiek sniegta izpildes laikā, tāpēc izpildes ātrums ir lēnāks, salīdzinot ar statisko saistīšanu.

Kāda ir līdzība starp statisko iesiešanu un dinamisko saistīšanu?

Abi tie ir saistīti ar polimorfismu, kas ļauj objektam izturēties dažādos veidos

Kāda ir atšķirība starp statisko iesiešanu un dinamisko saistīšanu?

Statiskā iesiešana pret dinamisko iesiešanu

Statiskā saistīšana ir saistīšanas veids, kas apkopo visu nepieciešamo informāciju, lai kompilēšanas laikā izsauktu funkciju. Dinamiskā saistīšana ir saistīšanas veids, kas apkopo visu nepieciešamo informāciju, lai darbības laikā izsauktu funkciju.
Iesiešanas laiks
Statiskā saistīšana notiek kompilēšanas laikā. Dinamiska saistīšana notiek izpildes laikā.
Funkcionalitāte
Statiskā iesiešana iesiešanai izmanto veida informāciju. Dinamiskā saistīšana izmanto objektus, lai atrisinātu saistīšanu.
Faktiskais objekts
Statiskā iesiešana iesiešanai neizmanto reālu objektu. Dinamiska iesiešana, iesiešanai izmantojiet faktisko objektu.
Sinonīmi
Statiskā iesiešana ir pazīstama arī kā agrīna iesiešana. Dinamisko iesiešanu sauc arī par vēlo iesiešanu.
Izpilde
Izpildes ātrums ir ātrs statiskajā iesiešanā. Dinamisko saistīšanu izpildes ātrums ir mazs.
Piemērs
Statiskā iesiešana tiek izmantota metodes pārslodzē. Metodes ignorēšanai tiek izmantota dinamiskā iesiešana.

Kopsavilkums - statiskā iesiešana pret dinamisko iesiešanu

Ir saikne starp metodes izsaukumu un metodes definīciju. Tas ir pazīstams kā saistošs. Ir divu veidu stiprinājumi, ko sauc par statisko iesiešanu un dinamisko iesiešanu. Atšķirība starp statisko saistīšanu un dinamisko saistīšanu ir tāda, ka statiskajā saistīšanā saistīšana tiek atrisināta kompilēšanas laikā, bet dinamiskā saistīšana tiek atrisināta izpildes laikā, kas ir faktiskais izpildes laiks. Tā kā vajadzīgā informācija tiek sniegta pirms izpildes laika, statiskā saistīšana tiek izpildīta ātri, salīdzinot ar dinamisko saistīšanu.

Lejupielādēt PDF failu statiskā saistīšana pret dinamisko saistīšanu

Varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistē saskaņā ar atsauces piezīmi. Lūdzu, lejupielādējiet PDF versiju šeit: Statiskās iesiešanas un dinamiskās iesiešanas atšķirība

Ieteicams: