16. Statičko i dinamičko povezivanje

Veza poziva metode sa tijelom metode se naziva povezivanje. Postoje dva tipa povezivanja

  1. statičko povezivanje (poznato i kao rano povezivanje).
  2. dinamičko povezivanje (poznato i kao kasno povezivanje).

Pojam tipa

Podsjetimo se pojma tipa instance 1) Varijable imaju tip Svaka varijabla ima tip, koji može biti primitivan ili ne-primitivan.

int data=30;

Ovdje je varijabla data tipa int. 2) Reference imaju tip

class Dog{  
 public static void main(String args[]){  
  Dog d1; //Ovdje je d1 tipa Dog  
 }  
}

3) Objekti imaju tip Objekt je instanca određene java klase, ali je takođe instanca svoje superklase.

class Animal{}  
  
class Dog extends Animal{  
 public static void main(String args[]){  
  Dog d1=new Dog();  
 }  
}

Ovdje je d1 instanca klase Dog, ali je takođe instanca klase Animal.

Statičko povezivanje

Kada je tip objekta određen u vremenu kompajliranja (od strane kompajlera), to je poznato kao statičko povezivanje. Ako u klasi postoji bilo koja private, final ili static metoda, postoji i statičko povezivanje. Primjer statičkog povezivanja

class Dog{  
 private void eat(){System.out.println("dog is eating...");}  
 public static void main(String args[]){  
  Dog d1=new Dog();  
  d1.eat();  
 }  
}

Dinamičko povezivanje

Kada je tip objekta određen u vremenu izvršavanja (runtime), to je poznato kao dinamičko povezivanje. Primjer dinamičkog povezivanja

class Animal{  
 void eat(){System.out.println("animal is eating...");}  
}  
  
class Dog extends Animal{  
 void eat(){System.out.println("dog is eating...");}  
  
 public static void main(String args[]){  
  Animal a=new Dog();  
  a.eat();  
 }  
}

Ispis na ekranu:
dog is eating...

U ovom primjeru tip objekta ne može odrediti kompajler, zato što je instanca klase Dog takođe instanca klase Animal. Tako kompajler ne zna njen tip, već samo njen osnovni tip.


Objektno orijentisano programiranje u Javi    Index