Java-da irki (statiki) we giç (dinamiki) baglanyşygyň arasyndaky tapawuda düşünmek üçin ilki bilen baglanyşygyň nämedigine düşünmeli . Baglamak, baglanyşyk bilen kodyň arasynda baglanyşyk bardygyny aňladýar. Mysal üçin, salgylanýan üýtgeýjiňiz kesgitlenen koda baglydyr. Edil şonuň ýaly-da, çagyrylýan usul kesgitlenen koduň ýerleşýän ýerine baglydyr.
Java dilinde baglanyşdyrmagyň iki görnüşi bar: irki baglanyşyk (statik hem diýilýär) we giç baglamak (degişlilikde dinamiki) . Java-da bir usula jaň etmek, bu usulyň düzülen wagty ýa-da programma işleýän wagty we obýektler döredilende belli bir koda baglydygyny aňladýar. Adyndan görnüşi ýaly, statiki baglanyşyk, düzüliş wagtynda bolşy ýaly has statikdir, ýagny Java deslapky kody synp faýllaryna jemlänsoň haýsy usula jaň etmelidigini “bilýär”. Bu programmanyň ýaşaýyş sikliniň irki döwrüne degişlidigi sebäpli, oňa irki hökmany diýilýär. Beýleki tarapdan, programma Java Virtual Machine tarapyndan işledilenden soň, dinamiki baglanyşyk iş wagtynda ýüze çykýar. Bu ýagdaýda haýsy jaň etmegiň usuly belli bir obýekt tarapyndan kesgitlenýär, şonuň üçin maglumatlar jemlenen wagtda elýeterli däl, sebäbi obýektler iş wagtynda döredilýär. Bu programmanyň ömrüniň giçliginde bolup geçýändigi sebäpli, Java-da giç baglanyşyk diýilýär.
Şeýlelik bilen, Java-da statiki we dinamiki baglanyşygyň arasyndaky düýpli tapawut, öňküsi salgylanma üýtgeýjisiniň görnüşine esaslanyp ir, kompil wagtynda ýüze çykýar we ikinjisi soň, iş wagtynda, anyk zatlary ulanyp ýüze çykýar.
Muny has gowy düşünmek üçin ýene-de birnäçe tapawutlara seredeliň we Java söhbetdeşliklerinde berlen bu iň meşhur soraga jogap tapyp bileris.
Java-da ir we giç baglanyşyk
Java-da statiki we dinamiki baglanyşygyň arasynda köp tapawut bar, ýöne iň esasysy JVM-iň olary ulanmagydyr. Şol bir at bilen birden köp usul bar bolsa, JVM haýsy usuly çagyrmalydygyny çözüp gördüňizmi? Hiç haçan artykmaç ýüklemek ýa-da artykmaç usul ulanmadyk bolsaňyz, Java-da şol bir at bilen birnäçe usul bolup biljekdigini bilýärsiňiz. Java ýagdaýynda, JVM islenýän usuly saýlamak üçin statiki we dinamiki baglanyşyk ulanýar.
Java-da statiki we dinamiki baglanyşygyň mysaly
Bu programmada, wirtual usullaryň baglanyşdyrylmagynyň statiki baglanyşyk ulanyp, kompilýasiýa wagtynda ýüze çykmaýandygyny görersiňiz, sebäbi bu irki baglanyşykda statiki usullar bilen bolşy ýaly superklasdan bir usul diýer. Bir kiçi klasdan bir usul diýilse, iş wagty funksiýany baglamak üçin belli bir obýekt ulanyldy we şonuň üçin wirtual funksiýalary baglanyşdyrmak üçin dinamiki baglanyşyk ulanylýar.
publicclassMain{publicstaticvoidmain(String[] args){// Пример статического и динамического связывания в JavaInsurance current =newCarInsurance();// Динамическое связывание на основе an objectint premium = current.premium();// Статическое связывание на основе классаString category = current.category();System.out.println("premium : "+ premium);System.out.println("category : "+ category);}}classInsurance{publicstaticfinalint LOW =100;publicintpremium(){return LOW;}publicstaticStringcategory(){return"Insurance";}}classCarInsuranceextendsInsurance{publicstaticfinalint HIGH =200;publicintpremium(){return HIGH;}publicstaticStringcategory(){return"Car Insurance";}}
Результаты выполнения:
premium :200
category :Insurance
Görşüňiz ýaly, usul jaňy premium()kiçi klasdan bir usulyň ýerine ýetirilmegine, usul jaňy bolsa category()superklass usulynyň ýerine ýetirilmegine sebäp boldy. Munuň sebäbi premium()- wirtual usul bolup, giç baglamak arkaly çözülýär, şol bir wagtyň özünde category()- synpyň ady bilen düzülen statiki baglanyşyk arkaly çözülýän statiki usul.
Java hakda okamak isleýärsiňizmi? Java Developer toparyna goşulyň !
Java-da ir we giç baglanyşygyň arasyndaky tapawutlar
Indi Java-yň usul jaňlaryny nädip baglanyşdyrýandygy we statiki we dinamiki baglanyşygyň nähili işleýändigi barada eliňiz bar bolsa, geliň Java-da ir we giç baglanyşmagyň arasyndaky esasy tapawutlary ýatlap geçeliň:
Statik baglanyşyk jemlenen wagtda ýüze çykýar, dinamiki baglanyşyk bolsa iş wagtynda bolýar.
Statiki baglanyşyk programmanyň ömrüniň irki döwründe ýüze çykýandygy sebäpli, oňa irki baglanyşyk diýilýär. Şonuň ýaly-da, dinamiki baglanyşyk giç baglanyşyk diýilýär, sebäbi programmanyň ýerine ýetirilişinde soň bolýar.
Statiki baglanyşyk Java dilinde artykmaç ýüklenen usullary çözmek üçin ulanylýar, dinamiki baglanyşyk bolsa Java dilinde artykmaç usullary çözmek üçin ulanylýar.
Şonuň ýaly-da, hususy, statiki we terminal usullary statiki baglanyşyk arkaly çözülýär, sebäbi olary ýok edip bolmaýar, ähli wirtual usullar dinamiki baglanyşyk arkaly çözülýär.
Statiki baglanyşyk bolan ýagdaýynda ulanylýan anyk zatlar däl-de, maglumat ýazyň, ýagny islenýän usuly tapmak üçin salgylanma üýtgeýjisiniň görnüşi ulanylýar. Beýleki tarapdan, dinamiki baglanyşyk Java-da islenýän usuly tapmak üçin belli bir obýekti ulanýar.
Ine, Java-da statiki we dinamiki baglanyşyk düşünjelerine esaslanýan gowy maşk. "Aşakdaky programma ýerine ýetirilende näme çykar?" Diýen soraga jogap berip bilersiňizmi ?
Bu programma näme çykar? Collection, Setýa-da HashSet? Java-da irki (statiki) we giç (dinamiki) baglanyşygyň arasyndaky tapawutlar barada size aýtmak isleýän zadymyz . Bu, iň gowy Java telefon söhbetdeşlik soraglarynyň biri, sebäbi dalaşgäriň bilim çuňlugyny barlamak üçin birnäçe mümkinçilik berýär. Şahsy , statiki we gutarnykly usullaryň statiki baglanyşyk bilen baglanyşýandygyny , wirtual usullaryň bolsa dinamiki baglanyşyk bilen baglanyşýandygyny ýadyňyzdan çykarmaň . Edil şonuň ýaly-da, statiki baglanyşygyň iň gowy mysaly usuly artykmaç ýüklemekdir, artykmaç dinamiki. Çeşme
GO TO FULL VERSION