Pagrindinis skirtumas - statinis įrišimas ir dinaminis įrišimas
Programavimo kalbos, tokios kaip „Java“ir „C #“, palaiko „Object Oriented Programming“(OOP). Tai leidžia kurti programinę įrangą naudojant objektus. Programinės įrangos sistemoje arba programoje yra daug objektų. Šie objektai turi atributus ir metodus. Atributai apibūdina charakteristikas. Metodai apibūdina veiksmus, kuriuos objektas gali atlikti. Duomenys perduodami per objektus naudojant metodus. Reikalingos vertės siunčiamos per metodo iškvietimus su parametrais. Faktinis metodo įgyvendinimas yra metodo apibrėžime. Tarp metodo iškvietimo ir metodo apibrėžimo yra ryšys. Jis žinomas kaip privalomas. Yra dviejų tipų apkaustai. Jie yra statiniai ir dinaminiai. Pagrindinis skirtumas tarp statinio ir dinaminio susiejimo yra tas, kad statinio susiejimo metu susiejimas yra išspręstas kompiliavimo metu, o dinaminis - vykdymo metu,kuris yra tikrasis vykdymo laikas. Šiame straipsnyje aptariamas šių dviejų privalomų mechanizmų skirtumas.
TURINYS
1. Apžvalga ir pagrindiniai skirtumai
2. Kas yra statinis įrišimas
3. Kas yra dinaminis įrišimas
4. Statinio įrišimo ir dinaminio įrišimo panašumai
5. Šoninis palyginimas - statinis ir dinaminis įrišimas lentelių pavidalu
6. Santrauka
Kas yra statinis įrišimas?
Susiejimas yra ryšys tarp metodo iškvietimo ir metodo apibrėžimų.
01 pav. Statinis įrišimas ir dinaminis įrišimas
Žr. Žemiau pateiktą programą, parašytą „Java“.
viešoji A klasė {
public void metodas1 () {
System.out.println („Metodas1“);
}
public void metodas2 () {
System.out.println („2 metodas“);
}
public static void main (String args) {
A obj = naujas A ();
obj.metode1 ();
obj.met2 ();
}
}
Pagal pirmiau minėtą programą sukuriamas A tipo objektas. Tada vadinami 1 metodas ir 2 metodas. Nustatyti, kuris metodas turėtų reikalauti vykdyti, yra žinomas kaip privalomas. Pareiškimas obj.method1 () iškvies metodą1 (), o obj.method2 () iškvies metodą2 (). Ši nuoroda yra privaloma.
Statiniame įrišime susiejimą kompiliatorius išsprendžia kompiliavimo metu. Jis taip pat žinomas kaip ankstyvasis įrišimas. Susiejimas įvyksta dar prieš paleidžiant programą. Statinis susiejimas įvyksta perkraunant metodą. Žr. Žemiau pateiktą programą, parašytą „Java“.
public void Skaičiavimas {
viešoji niekinė suma (int x, int y) {
System.out.println („Suma yra“, x + y);
}
viešoji niekinė suma (dviguba x, dviguba y) {
System.out.println („Suma yra“, x + y);
}
public static void main (String args) {
Skaičiavimas cal = naujas skaičiavimas ();
cal.sum (2,3);
cal.sum (5,1, 6,4);
}
}
Pagal pirmiau pateiktą programą, perduodant du skaičius, bus naudojamas metodas su dviem sveikaisiais skaičiais. Perduodant dvi dvigubas reikšmes, bus naudojamas metodas, atitinkantis dvi dvigubas vertes. Šis įrišimo procesas vyksta rengimo metu. Kompiliatorius žino, kad jis turėtų iškviesti sumos metodą su dviem sveikojo skaičiaus reikšmėmis cal.sum (2,3). Skaičiuojant cal (5.1,6.4), jis iškvies sumos metodą su dviem dvigubomis reikšmėmis. Visa reikalinga informacija yra žinoma prieš vykdymą, todėl ji padidina programos efektyvumą ir vykdymo greitį.
Kas yra dinaminis įrišimas?
Dinaminiame įrišime kompiliatorius neišsprendžia susiejimo kompiliavimo metu. Susiejimas vyksta vykdymo metu. Jis taip pat žinomas kaip vėlyvas rišimas. Dinaminis susiejimas įvyksta metodo viršijimo atveju. Žr. Programą, parašytą „Java“.
visuomenės klasės forma () {
public void draw () {
System.out.println („Nubrėžti figūrą“);
}
}
visuomenės klasės ratas () pratęsia formą {
public void draw () {
System.out.println („Nubrėžti apskritimą“);
}
}
visuomenės klasės trikampis () pratęsia formą {
public void draw () {
System.out.println („Nubrėžkite trikampį“);
}
}
viešosios klasės testas {
public static void main (String args) {
Forma s;
s = nauja forma ();
s.piešti ();
s = naujas apskritimas ();
s.piešti ();
s = naujas trikampis ();
s.piešti ();
}
}
Pagal minėtą programą „Shape“klasėje yra metodas „draw“(). „Class Circle“ir „Triangle“pratęsia „Shape“klasę. „Class Circle“ir „Class Triangle“gali paveldėti klasės „Shape“atributus ir metodus. Todėl „Class Shape“yra super klasė arba tėvų klasė. „Class Circle“ir „Class Triangle“yra pogrupiai arba išvestinės klasės. Šios klasės taip pat turi „draw ()“metodą su savo įdiegimais. Todėl superklasės piešimo () metodas yra nepaisomas.
Pagal pagrindinį metodą naudojami įvairūs objektai. Yra formos formos kintamasis, kuris yra s. Tada, s naudoja metodą pagal konkrečią klasę. Kompiliavimo metu kompiliatorius remsis tik super klasės piešimo metodu. Kai prasidės faktinis vykdymas, bus vykdomi skirtingi piešimo metodai. Pirma, s bus nukreipta į „Shape“tipo objektą. Todėl „Shape“klasėje bus naudojamasi piešimo metodu. Tada s bus nukreiptas į „Circle“tipo objektą, ir jis iškvies „Circle“klasės piešimo metodą. Galiausiai s nurodys „Triangle“tipo objektą ir „Triangle“klasėje naudos piešimo metodą. Nors referencinis kintamasis yra „Shape“tipo, susiejimas priklauso nuo objekto tipo. Ši koncepcija yra žinoma kaip dinaminis įrišimas. Informacija pateikiama vykdymo metu,taigi vykdymo greitis yra lėtesnis, lyginant su statiniu įrišimu.
Kuo panašus statinis ir dinaminis rišimas?
Abu jie yra susiję su polimorfizmu, leidžiančiu objektui elgtis keliais būdais
Koks skirtumas tarp statinio ir dinaminio įrišimo?
Skirtingas straipsnis viduryje prieš lentelę
Statinis įrišimas ir dinaminis įrišimas |
|
„Static Binding“yra įrišimo tipas, kuris surenka visą reikiamą informaciją, reikalingą funkcijai iškviesti per kompiliavimo laiką. | „Dinaminis įrišimas“yra įrišimo tipas, kuris renka visą reikiamą informaciją, kad būtų galima iškviesti funkciją 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 įrišimas“naudoja objektus, kad būtų galima surišti. |
Faktinis objektas | |
Statinis įrišimas nenaudoja tikrojo objekto įrišimui. | Dinaminis susiejimas, susiejimui naudokite tikrąjį objektą. |
Sinonimai | |
Statinis įrišimas taip pat žinomas kaip ankstyvasis įrišimas. | Dinaminis rišimas taip pat žinomas kaip vėlyvasis susiejimas. |
Vykdymas | |
Vykdymo greitis yra greitas statiniu įrišimu. | Vykdymo greitis yra nedidelis, kai yra dinaminis susiejimas. |
Pavyzdys | |
Statinis susiejimas naudojamas perkraunant metodą. | Dinaminis susiejimas naudojamas metodo viršijime. |
Santrauka - statinis įrišimas ir dinaminis įrišimas
Tarp metodo iškvietimo ir metodo apibrėžimo yra ryšys. Jis žinomas kaip privalomas. Yra dviejų tipų rišimai, vadinami statiniu ir dinaminiu. Skirtumas tarp statinio ir dinaminio susiejimo yra tas, kad statinio rišimo metu susiejimas yra išspręstas kompiliavimo metu, o dinaminis - vykdymo metu, kuris yra tikrasis vykdymo laikas. Kadangi reikalinga informacija pateikiama prieš vykdymo laiką, statinis susiejimas yra greitai vykdomas, palyginti su dinaminiu susiejimu.
Atsisiųskite „Static Binding vs Dynamic Binding“PDF failą
Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia: Skirtumas tarp statinio ir dinaminio įrišimo