Pagrindinis skirtumas – statinis įrišimas ir dinaminis įrišimas
Programavimo kalbos, tokios kaip Java ir C, palaiko objektinį programavimą (OOP). Tai leidžia kurti programinę įrangą naudojant objektus. Programinės įrangos sistemoje ar programoje yra daug objektų. Šie objektai turi atributus ir metodus. Atributai apibūdina charakteristikas. Metodai apibūdina veiksmus, kuriuos gali atlikti objektas. Duomenys perduodami per objektus naudojant metodus. Reikalingos reikšmės siunčiamos per metodų iškvietimus su parametrais. Faktinis metodo įgyvendinimas yra metodo apibrėžime. Yra ryšys tarp metodo iškvietimo ir metodo apibrėžimo. Jis žinomas kaip privalomas. Yra dviejų tipų apkaustai. Jie yra statiniai ir dinaminiai. Pagrindinis skirtumas tarp statinio surišimo ir dinaminio susiejimo yra tas, kad statinio susiejimo atveju susiejimas išsprendžiamas kompiliavimo metu, o dinaminis susiejimas – vykdymo metu, kuris yra tikrasis vykdymo laikas. Šiame straipsnyje aptariamas šių dviejų privalomų mechanizmų skirtumas.
Kas yra statinis įrišimas?
Surišimas yra ryšys tarp metodo iškvietimo ir metodo apibrėžimų.
01 pav.: Statinis ir dinaminis įrišimas
Žiūrėkite toliau pateiktą programą, parašytą Java.
viešoji A klasė{
viešas galiojantis metodas1(){
System.out.println(“1 metodas“);
}
viešas galiojantis metodas2(){
System.out.println(“2 metodas“);
}
vieša statinė void main(String args){
A obj=naujas A();
obj.method1();
obj.method2();
}
}
Pagal aukščiau pateiktą programą sukuriamas A tipo objektas. Tada iškviečiamas 1 metodas ir 2 metodas. Nustatyti, kuris metodas turėtų būti vykdomas, yra žinomas kaip privalomas. Teiginys obj.method1() iškvies method1() ir obj.method2() iškvies method2(). Ši nuoroda yra privaloma.
Statinio įrišimo metu surišimą kompiliavimo metu išsprendžia kompiliatorius. Jis taip pat žinomas kaip ankstyvas įrišimas. Įrišimas įvyksta prieš iš tikrųjų paleidžiant programą. Perkrovus metodą, atsiranda statinis surišimas. Žiūrėkite toliau pateiktą programą, parašytą Java.
viešas negaliojantis skaičiavimas{
vieša negaliojanti suma(int x, tarp y){
System.out.println(“Suma yra “, x+y);
}
vieša negaliojanti suma(dvigubas x, dvigubas y){
System.out.println(“Suma yra “, x+y);
}
vieša statinė void main(String args){
Skaičiavimas cal=naujas Skaičiavimas();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Pagal aukščiau pateiktą programą, perduodant du sveikuosius skaičius, bus iškviestas metodas su dviem sveikaisiais skaičiais. Perduodant dvi dvigubas reikšmes, bus naudojamas metodas, atitinkantis dvi dvigubas reikšmes. Šis įrišimo procesas vyksta kompiliavimo metu. Kompiliatorius žino, kad jis turėtų iškviesti sumos metodą su dviem sveikųjų skaičių reikšmėmis cal.sum(2, 3). Cal(5.1, 6.4) iškvies sumos metodą su dviem dvigubomis reikšmėmis. Visa reikalinga informacija yra žinoma prieš paleidžiant, todėl tai padidina programos efektyvumą ir vykdymo greitį.
Kas yra dinaminis įrišimas?
Naudojant dinaminį įrišimą, kompiliatorius neišsprendžia susiejimo kompiliavimo metu. Surišimas vyksta vykdymo metu. Jis taip pat žinomas kaip vėlyvas įrišimas. Dinaminis susiejimas vyksta nepaisant metodo. Žr. programą, parašytą Java.
viešoji klasė Forma(){
viešas anuliuotas burtas(){
System.out.println("Brėžti formą");
}
}
viešoji klasė Circle() išplečia formą{
viešas anuliuotas burtas(){
System.out.println("Nubrėžkite apskritimą");
}
}
viešoji klasė Trikampis() išplečia formą{
viešas anuliuotas burtas(){
System.out.println("Brėžti trikampį");
}
}
viešos klasės testas{
vieša statinė void main(String args){
Forma;
s=nauja forma ();
s.draw();
s=naujas ratas();
s.draw();
s=naujas trikampis();
s.draw();
}
}
Pagal aukščiau pateiktą programą, klasė Shape turi metodą draw(). Klasė apskritimas ir klasė trikampis išplečia formos klasę. Klasė Apskritimas ir klasė Trikampis gali paveldėti klasės Shape atributus ir metodus. Todėl klasė Shape yra super klasė arba pagrindinė klasė. Klasės apskritimas ir klasės trikampis yra poklasės arba išvestinės klasės. Šios klasės taip pat turi draw() metodą su savo įgyvendinimais. Todėl metodas draw() super klasėje yra nepaisomas.
Pagrindiniame metode iškviečiami skirtingi objektai. Yra Shape tipo atskaitos kintamasis, kuris yra s. Tada s iškviečia metodą pagal konkrečią klasę. Kompiliavimo metu kompiliatorius naudos tik super klasės traukimo metodą. Kai prasidės tikrasis vykdymas, bus vykdomi skirtingi traukimo metodai. Pirma, s bus nukreipta į Shape tipo objektą. Todėl jis iškvies piešimo metodą Shape klasėje. Tada s bus nukreiptas į Circle tipo objektą ir jis iškvies Circle klasės piešimo metodą. Galiausiai s nurodys trikampio tipo objektą ir iškvies piešimo metodą Triangle klasėje. Nors nuorodos kintamasis yra Shape tipo, susiejimas priklauso nuo objekto tipo. Ši koncepcija žinoma kaip dinaminis įrišimas. Informacija pateikiama vykdymo metu, todėl vykdymo greitis yra lėtesnis, palyginti su statiniu įrišimu.
Koks yra statinio ir dinaminio įrišimo panašumas?
Abu yra susiję su polimorfizmu, leidžiančiu objektu elgtis įvairiais būdais
Kuo skiriasi statinis įrišimas ir dinaminis įrišimas?
Statinis įrišimas prieš dinaminį įrišimą |
|
Statinis surišimas yra susiejimo tipas, kuris renka visą informaciją, reikalingą funkcijai iškviesti kompiliavimo metu. | Dinaminis susiejimas yra susiejimo tipas, kuris renka visą informaciją, reikalingą funkcijai iškviesti vykdymo metu. |
Įrišimo laikas | |
Statinis įrišimas vyksta kompiliavimo metu. | Dinaminis susiejimas vyksta vykdymo metu. |
Funkcionalumas | |
Statinis įrišimas naudoja tipo informaciją įrišimui. | Dinaminis surišimas naudoja objektus, kad nustatytų susiejimą. |
Faktinis objektas | |
Statiniam įrišimui nenaudojamas tikrasis objektas. | Dinaminis įrišimas, įrišimui naudokite tikrąjį objektą. |
Sinonimai | |
Statinis įrišimas taip pat žinomas kaip ankstyvasis įrišimas. | Dinaminis įrišimas taip pat žinomas kaip vėlyvas įrišimas. |
Vykdymas | |
Statinio įrišimo vykdymo greitis yra greitas. | Dinaminio įrišimo vykdymo greitis yra mažas. |
Pavyzdys | |
Statinis įrišimas naudojamas metodo perkrovimui. | Dinaminis įrišimas naudojamas metodo nepaisymui. |
Santrauka – statinis įrišimas prieš dinaminį įrišimą
Yra ryšys tarp metodo iškvietimo ir metodo apibrėžimo. Jis žinomas kaip privalomas. Yra dviejų tipų įrišimai, vadinami statiniu ir dinaminiu įrišimu. Skirtumas tarp statinio surišimo ir dinaminio susiejimo yra tas, kad statinio surišimo atveju susiejimas išsprendžiamas kompiliavimo metu, o dinaminis susiejimas – vykdymo metu, ty tikrasis vykdymo laikas. Kadangi reikalinga informacija pateikiama prieš vykdymo laiką, statinis susiejimas vykdomas greitai, palyginti su dinaminiu susiejimu.
Atsisiųskite statinio įrišimo ir dinaminio įrišimo PDF failą
Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia: Statinio ir dinaminio įrišimo skirtumas