Quina diferència hi ha entre l’enquadernació primerenca i la tardana a Java?


Resposta 1:

L’enllaç tardà i l’enllaç inicial es refereixen a la manera com s’implementen les trucades de funcionament en un programa compilat.

Concretament, una trucada de funcions es compila al codi de la màquina com a salt: la màquina saltarà de la posició actual a l'inici del codi de funció. Quan la funció finalitzi, la màquina tornarà al punt d’inici i continuarà executant des d’on ha sortit.

La peculiaritat és ara que no sempre sabeu quina és la funció real que cal executar en una trucada de funció: això s’anomena polimorfisme i és típic en llenguatges i dissenys orientats a objectes, ja que podeu tenir múltiples implementacions d’una sola interfície i utilitzar-les de forma independent en code: quan el programa s’executi finalment, aquestes interfícies s’enllaçaran a una implementació real, un objecte que s’ha instància.

D’això s’anomena enllaç tardà, en contraposició a l’enllaç precoç: amb aquest últim no teniu polimorfisme, per a cada trucada de funció sabreu sense ambigüitat quin codi de màquina s’executarà quan escriviu el vostre programa, alias a l’hora de compilar (o, més precisament, a l’enllaç). temps). Amb enllaç tardà, només en el moment d’executar el salt (temps d’execució) el programa estarà segur de quina mena d’objecte realment representa una interfície establerta o quin és el valor d’un punter de funció: aleshores el programa determinarà a quin codi ha de saltar. Tingueu en compte que, com a comentari addicional, és que la mateixa trucada exacta a la funció pot saltar a implementacions de funcions molt diferents, per exemple en iteracions posteriors del bucle.