2016-02-22 4 views

ответ

0

Насколько я знаю, в основном это разные способы обращения к тем же концепциям.

Учитывая простую иерархию, как это:

class Phone { 
    ... 
} 

class iPhone extends Phone { 
    public boolean isExpensive() { 
     return true; 
    } 
} 

class Wileyfox extends Phone { 
    public boolean isExpensive() { 
     return false; 
    } 
} 

Раннего/статическое связывание, когда типы и какие типы методов призваны во время компиляции: метод

iPhone phone = new iPhone(); 
phone.isExpensive(); 

При вызове isExpensive() здесь , компилятор уже знает, что ему нужно привязать тип iPhone к телефонной переменной во время компиляции.

Поздний/Динамическая привязка, когда компилятор не может понять, кто будет называть во время компиляции, но во время выполнения:

public boolean canAfford(Phone phone) { 
    return !phone.isExpensive(); 
} 

В этом случае компилятор не может определить пока код не будет запущен.

Смежные вопросы