JavaRush /Java Blog /Random-TK /Java-da ir we giç baglanyşygyň arasyndaky tapawutlar

Java-da ir we giç baglanyşygyň arasyndaky tapawutlar

Toparda çap edildi
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-da ir we giç baglanyşygyň arasyndaky tapawutlar - 1
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.
public class Main {
  public static void main(String[] args) {

    // Пример статического и динамического связывания в Java
    Insurance current = new CarInsurance();

    // Динамическое связывание на основе an object
    int premium = current.premium();

    // Статическое связывание на основе класса
    String category = current.category();

    System.out.println("premium : " + premium);
    System.out.println("category : " + category);
  }
}

class Insurance{
  public static final int LOW = 100;

  public int premium(){
    return LOW;
  }

  public static String category(){
    return "Insurance";
  }

}

class CarInsurance extends Insurance{
  public static final int HIGH = 200;

  public int premium(){
    return HIGH;
  }

  public static String category(){
    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ň:
  1. Statik baglanyşyk jemlenen wagtda ýüze çykýar, dinamiki baglanyşyk bolsa iş wagtynda bolýar.

  2. 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.

  3. Statiki baglanyşyk Java dilinde artykmaç ýüklenen usullary çözmek üçin ulanylýar, dinamiki baglanyşyk bolsa Java dilinde artykmaç usullary çözmek üçin ulanylýar.

  4. Ş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.

  5. 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 ?
Java-da ir we giç baglanyşygyň arasyndaky tapawutlar - 2
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
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION