Programmēšanas valodas, piemēram, Java un C #, atbalsta Object Oriented Programming (OOP). Tas ļauj veidot programmatūru, izmantojot objektus. Programmatūras sistēmā vai programmā ir daudz objektu. Šiem objektiem ir atribūti un metodes. Atribūti apraksta raksturlielumus. Metodes apraksta darbības, kuras var veikt objekts. 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ā. Starp metodes izsaukumu un metodes definīciju ir saikne. Tas ir pazīstams kā saistošs. Ir divu veidu stiprinājumi. Tās ir statiskas un dinamiskas iesiešanas. galvenā atšķirība starp statisko un dinamisko saistīšanu tas ir, statiskā iesiešanā saistīšana tiek atrisināta sastādīšanas laikā, savukārt dinamiskā saistīšana tiek atrisināta izpildes laikā, kas ir faktiskais izpildes laiks. Šajā rakstā ir apskatīta atšķirība starp šiem diviem saistošajiem mehānismiem.
1. Pārskats un galvenās atšķirības
2. Kas ir statiskā iesiešana
3. Kas ir dinamiskā iesiešana
4. Līdzības starp statisko iesiešanu un dinamisko iesiešanu
5. Salīdzinājums blakus - statiskā iesiešana vs dinamiskā iesiešana tabulas formā
6. Kopsavilkums
Iesiešana ir saikne starp metodes izsaukumu un metodes definīcijām.
01. attēls. Statiskā iesiešana un dinamiskā iesiešana
Skatiet zemāk Java rakstīto programmu.
sabiedriskā klase A
public void method1 ()
System.out.println (“Metode1”);
public void method2 ()
System.out.println (“2. metode”);
public static void main (stīgas [] args)
A obj = jauns A ();
obj.metode1 ();
obj.metode2 ();
Saskaņā ar iepriekšminēto programmu tiek izveidots A tipa objekts. Tad tiek saukta metode1 un metode2. Identificēšana, kurai metodei vajadzētu izsaukt izpildi, ir saistoša. Paziņojums obj.method1 () izsauks metodi1 () un obj.method2 () izsauks metodi2 (). Šī saite ir saistoša.
Statiskā iesiešanā iesiešanu kompilācijas laikā atrisina saistīšana. To sauc arī par agrīna iesiešana. Iesiešana notiek pirms programmas faktiskās palaišanas. Statiska saistīšana notiek metodes pārslodzē. Skatiet zemāk Java rakstīto programmu.
publisks spēkā neesošs aprēķins
publiskā spēkā neesošā summa (int x, int y)
System.out.println (“Summa ir”, x + y);
publiskā tukšā summa (dubultā x, dubultā y)
System.out.println (“Summa ir”, x + y);
public static void main (stīgas [] args)
Aprēķins cal = jauns aprēķins ();
kalcija (2,3);
kalcija (5.1., 6.4.);
Saskaņā ar iepriekšminēto programmu, kad tiek pārsniegti divi veseli skaitļi, tiks izmantota metode ar diviem veseliem skaitļiem. Kad tiek pārsūtītas divas dubultās vērtības, tiks izmantota metode, kas atbilst divām dubultvērtībām. Šis iesiešanas process notiek kompilācijas laikā. Kompilators zina, ka tai vajadzētu izsaukt summas metodi ar divām vesels skaitļa vērtībām cal (2,3). Par cal (5.1,6.4) tas izsauks summu metodi ar divām divkāršām vērtībām. Visa nepieciešamā informācija ir zināma pirms izpildlaika, tāpēc tas palielina programmas efektivitāti un izpildes ātrumu.
Dinamiskajā iesiešanā kompilators neatrisina saistīšanu kompilācijas laikā. Iesiešana notiek izpildes laikā. To sauc arī par vēlu iesiešana. Dinamiska iesiešana notiek metodes pārsvarā. Skatiet programmu, kas rakstīta Java.
sabiedriskās klases forma ()
public void draw ()
System.out.println (“Zīmēt formu”);
sabiedriskās klases aplis () paplašina formu
public void draw ()
System.out.println (“Draw aplis”);
sabiedriskās klases trīsstūris () paplašina formu
public void draw ()
System.out.println (“Zīmēt trīsstūri”);
sabiedriskās klases pārbaude
public static void main (stīgas [] args)
Formas;
s = jaunā forma ();
s.draw ();
s = jauns aplis ();
s.draw ();
s = jauns trīsstūris ();
s.draw ();
Saskaņā ar iepriekšminēto programmu klases Shape ir metodes izloze (). Klases aplis un klases trīsstūris paplašina formas klasi. Klases aplis un klases trīsstūris var mantot klases formas atribūtus un metodes. Tāpēc klases forma ir superklase vai vecāku klase. Klases aplis un klases trīsstūris ir apakšklases vai atvasinātas klases. Šajās klasēs ir arī draw () metode ar savām ieviešanām. Tāpēc superklases izlozes () metode tiek ignorēta.
Pamatmetodē tiek izsaukti dažādi objekti. Pastāv formas tipa atsauces mainīgais, kas ir s. Pēc tam s izsauc metodi atbilstoši konkrētajai klasei. Apkopošanas laikā kompilators atsaucas tikai uz superklases izlozes metodi. Kad sākas faktiskā izpilde, tas novedīs pie dažādu izlozes metožu izpildes. Pirmkārt, s norādīs uz Shape tipa objektu. Tāpēc Shape klasē tā izmantos izlozes metodi. Tad s norādīs apļa tipa objektu, un tas izsauks apļa klases izlozes metodi. Visbeidzot, s atsauksies uz trīsstūra tipa objektu, un tas izsauks zīmēšanas metodi trīsstūra klasē. Pat ja atsauces mainīgais ir formas Shape, saistīšana notiek atkarībā no objekta veida. Šī koncepcija ir pazīstama kā dinamiskā iesiešana. Informācija tiek sniegta izpildes laikā, tāpēc izpildes ātrums ir lēnāks, salīdzinot ar statisko iesiešanu.
Statiskā iesiešana vs dinamiskā iesiešana | |
Statiskā iesiešana ir sasaistes veids, kas apkopo visu nepieciešamo informāciju, lai izsauktu funkciju kompilēšanas laikā. | Dinamiskā iesiešana ir iesiešanas veids, kas apkopo visu nepieciešamo informāciju, lai izsauktu funkciju izpildes laikā. |
Iesiešanas laiks | |
Statiskā saistīšana notiek kompilēšanas laikā. | Dinamiska iesiešana notiek izpildes laikā. |
Funkcionalitāte | |
Statiskā iesiešana saistīšanai izmanto informāciju par tipu. | Dinamiskā iesiešana izmanto objektus, lai tos saistītu. |
Faktiskais objekts | |
Statiskā iesiešanā neizmanto faktisko objektu. | Dinamiska iesiešana - iesiešanai izmantojiet faktisko objektu. |
Sinonīmi | |
Statisko saistīšanu sauc arī par agrīno saistīšanu. | Dinamiskā saistīšana ir pazīstama arī kā vēlīnā saistīšana. |
Izpilde | |
Statiskajā iesiešanā izpildes ātrums ir ātrs. | Dinamiskā iesiešanā izpildes ātrums ir mazs. |
Piemērs | |
Metodes pārslodzē tiek izmantota statiskā saistīšana. | Metodes ignorēšanā tiek izmantota dinamiskā iesiešana. |
Starp metodes izsaukumu un metodes definīciju ir saikne. Tas ir pazīstams kā saistošs. Pastāv 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 statiskā saistīšanas gadījumā saistīšana tiek atrisināta sastādīšanas laikā, savukārt dinamiskā saistīšana tiek atrisināta izpildes laikā, kas ir faktiskais izpildes laiks. Tā kā nepieciešamā informācija tiek sniegta pirms izpildes laika, statiskā saistīšana tiek ātri izpildīta, salīdzinot ar dinamisko saistīšanu.
Varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistes vajadzībām, kā norādīts citēšanas piezīmē. Lūdzu, lejupielādējiet PDF versiju šeit: Atšķirība starp statisko iesiešanu un dinamisko iesiešanu
1.Java Intervija 04 - Statiskā iesiešana un dinamiskā iesiešana, Mahika konsultācijas, 2017. gada 27. decembris. Pieejams šeit