Statičko i dinamičko povezivanje

Statičko i dinamičko povezivanje

Veza poziva metode sa telom 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

Podsetimo se pojma tipa instance

1) Promenljive imaju tip Svaka promenljiva ima tip, koji može biti primitivan ili ne-primitivan.

1
int data=30;

Ovde je promenljiva data tipa int.

2) Reference imaju tip

1
2
3
4
5
class Dog{ 
 public static void main(String args[]){ 
  Dog d1; //Ovde je d1 tipa Dog 
 
}

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

1
2
3
4
5
6
7
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. Primer statičkog povezivanja:

1
2
3
4
5
6
7
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. Primer dinamičkog povezivanja:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 primeru 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.

Comments

comments

Close Menu
Show Buttons
Hide Buttons