Early Binding e Late Binding são dois conceitos relacionados ao polimorfismo. A ligação antecipada ocorre em tempo de compilação, enquanto a ligação tardia ocorre em tempo de execução. o diferença chave entre vinculação precoce e tardia é que Ligação Antecipada usa as informações da classe para resolver chamadas de método, enquanto Ligação Atrasada usa o objeto para resolver chamadas de método.
Linguagens de programação como Java suportam Programação Orientada a Objetos (OOP). É um paradigma que permite construir o programa ou o software usando objetos. Existem vários objetos no software. Esses objetos são conectados um ao outro e transmitem mensagens usando métodos. Todo objeto tem características e comportamentos. As características são descritas pelas propriedades ou atributos. Os comportamentos são descritos usando métodos. O objeto Student pode ter características como nome, idade e são representados por propriedades. O objeto Student pode ter comportamentos como estudar e ler, e eles são representados por métodos. Um dos principais pilares da POO é o polimorfismo. Ele permite que um objeto se comporte de várias maneiras. A ligação inicial e a ligação tardia são dois conceitos no polimorfismo. Os métodos de sobrecarga são ligados usando ligação antecipada. Métodos substituídos são ligados usando ligação tardia.
1. Visão geral e principais diferenças
2. O que é vinculação antecipada
3. O que é vinculação tardia
4. Semelhanças entre vinculação precoce e tardia
5. Comparação lado a lado - vinculação antecipada e tardia em forma de tabela
6. Resumo
Na Ligação Antecipada, as informações da classe são usadas para resolver a chamada de método. Ligação antecipada ocorre no momento da compilação. Também é conhecido como ligação estática. Nesse processo, a ligação ocorre antes da execução do programa. Os métodos de sobrecarga são ligados usando ligação antecipada. Consulte o programa abaixo.
Figura 01: Classe de cálculo
Figura 02: Programa principal de vinculação antecipada
De acordo com o programa acima, a classe Calculation contém um método add que aceita dois valores inteiros e outro método add que aceita dois valores duplos. No programa principal, um objeto do tipo Cálculo é criado. Ao passar dois números inteiros para o método add, ele invocará o método add que aceita dois números inteiros. Ao passar dois valores duplos para o método add, ele invocará o método correspondente a dois valores duplos. Esse processo de ligação ocorre no momento da compilação. Todas as informações necessárias são conhecidas antes do tempo de execução, aumentando a eficiência do programa e a velocidade de execução.
Na associação tardia, o objeto é usado para resolver a chamada de método. A ligação tardia ocorre em tempo de execução. Também é conhecido como ligação dinâmica. Nesse processo, a ligação ocorre na execução do programa. Métodos substituídos são ligados usando ligação tardia. Consulte o programa abaixo.
Figura 03: Classe de forma
Figura 04: Classe Círculo
Figura 05: Classe Triângulo
Figura 06: Programa principal para vinculação tardia
De acordo com o programa acima, a classe Shape possui um método de desenho. Classe Círculo e classe Triângulo estendem a classe Shape. Portanto, essas duas classes podem herdar os atributos e métodos da classe Shape. Classe de forma é a classe base. As classes Circle e Triangle são classes derivadas. A classe Circle e a classe Triangle também têm o método draw com suas próprias implementações. Portanto, o método draw na classe Shape é substituído pelos métodos draw das classes derivadas.
No programa principal, uma variável de referência s do tipo Shape é criada. No momento da compilação, o compilador fará referência apenas ao método de desenho da classe base. Em tempo de execução, diferentes métodos de desenho serão executados. Primeiro, s apontará para o objeto do tipo Shape. Portanto, o método draw da classe Shape é invocado. Então, os s apontarão para o objeto do tipo Circle e chamarão o método draw da classe Circle. Finalmente, s apontará para o objeto do tipo Triangle e chamará o método draw na classe Triangle. Os métodos são chamados dependendo dos objetos. Portanto, o objeto é usado para resolver a chamada de método na associação tardia. As informações necessárias para a ligação são fornecidas em tempo de execução, portanto, a velocidade de execução é mais lenta em comparação à ligação antecipada.
Vinculação antecipada vs Vinculação tardia | |
O processo de usar as informações da classe para resolver chamadas de métodos que ocorrem no momento da compilação é chamado Ligação Antecipada. | O processo de usar o objeto para resolver a chamada de método que ocorre no tempo de execução é chamado de associação tardia. |
Tempo de ligação | |
A ligação antecipada acontece no momento da compilação. | A ligação tardia acontece em tempo de execução. |
Funcionalidade | |
Ligação Antecipada usa as informações da classe para resolver a chamada de método. | A associação tardia usa o objeto para resolver a chamada de método. |
Sinônimos | |
A ligação antecipada também é conhecida como ligação estática… | A ligação tardia também é conhecida como ligação dinâmica. |
Ocorrência | |
Os métodos de sobrecarga são ligados usando ligação antecipada. | Métodos substituídos são ligados usando ligação tardia. |
Velocidade de Execução | |
A velocidade de execução é mais rápida na ligação antecipada. | A velocidade de execução é mais baixa na ligação tardia. |
OOP é comumente usado para desenvolvimento de software. Um dos principais pilares da POO é o polimorfismo. A ligação antecipada e a ligação tardia estão relacionadas a isso. A associação antecipada ocorre em tempo de compilação, enquanto a associação tardia ocorre em tempo de execução. Na sobrecarga de método, a ligação ocorre usando a ligação inicial. Na substituição do método, a ligação ocorre usando a ligação tardia. A diferença entre a associação antecipada e tardia é que a associação antecipada usa as informações da classe para resolver a chamada de método, enquanto a associação tardia usa o objeto para resolver a chamada de método.
1.Entrevista Java 04 - Vinculação estática versus vinculação dinâmica, Tutoriais do Mahika, 27 de dezembro de 2017. Disponível aqui
2.Envio de método dinâmico em Java | Tutorial Java principal | Studytonight. Disponivel aqui