Linguagens de programação como Java e C # suportam Programação Orientada a Objetos (OOP). Permite construir software usando objetos. Existem muitos objetos em um sistema de software ou programa. Esses objetos têm atributos e métodos. Atributos descrevem as características. Os métodos descrevem as ações que podem ser executadas pelo objeto. Os dados são passados por objetos usando métodos. Os valores necessários são enviados através de chamadas de método com parâmetros. A implementação real do método está na definição do método. Existe um link entre uma chamada de método e a definição de método. É conhecido como ligação. Existem dois tipos de ligações. Eles são ligação estática e ligação dinâmica. o diferença chave entre ligação estática e ligação dinâmica é que, na ligação estática, a ligação é resolvida no tempo de compilação, enquanto a ligação dinâmica é resolvida no tempo de execução, que é o tempo real de execução. Este artigo discute a diferença entre esses dois mecanismos de ligação.
1. Visão geral e principais diferenças
2. O que é ligação estática
3. O que é ligação dinâmica
4. Semelhanças entre ligação estática e ligação dinâmica
5. Comparação lado a lado - ligação estática versus ligação dinâmica em forma de tabela
6. Resumo
Ligação é o link entre uma chamada de método e definições de método.
Figura 01: Ligação estática e ligação dinâmica
Consulte o programa abaixo escrito em Java.
classe pública A
public void method1 ()
System.out.println ("Método1");
public void method2 ()
System.out.println ("Método2");
public static void main (String [] args)
A obj = novo A ();
obj.method1 ();
obj.method2 ();
De acordo com o programa acima, um objeto do tipo A é criado. Então method1 e method2 são chamados. A identificação de qual método deve ser chamado de execução é conhecida como ligação. A instrução obj.method1 () chamará method1 () e obj.method2 () chamará method2 (). Este link é obrigatório.
Na ligação estática, a ligação é resolvida no tempo de compilação pelo compilador. Também é conhecido como ligação antecipada. A ligação acontece antes que um programa realmente seja executado. A ligação estática ocorre na sobrecarga do método. Consulte o programa abaixo escrito em Java.
Cálculo de void público
soma do vazio público (int x, int y)
System.out.println ("Soma é", x + y);
soma do vazio público (duplo x, duplo y)
System.out.println ("Soma é", x + y);
public static void main (String [] args)
Cálculo cal = novo cálculo ();
cal.sum (2,3);
cal.sum (5.1, 6.4);
De acordo com o programa acima, ao passar os dois números inteiros, o método com dois números inteiros será chamado. Ao passar dois valores duplos, o método correspondente a dois valores duplos será chamado. Esse processo de ligação ocorre no momento da compilação. O compilador sabe que deve chamar o método sum com dois valores inteiros para cal.sum (2,3). Para cal (5.1,6.4), ele chamará o método soma com dois valores duplos. 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 ligação dinâmica, o compilador não resolve a ligação no tempo de compilação. A ligação ocorre no tempo de execução. Também é conhecido como ligação tardia. Ligação dinâmica ocorre na substituição do método. Consulte o programa escrito em Java.
classe pública Shape ()
sorteio público vazio ()
System.out.println ("Draw shape");
classe pública Circle () estende Shape
sorteio público vazio ()
System.out.println ("Desenhar círculo");
classe pública Triangle () estende Shape
sorteio público vazio ()
System.out.println ("Desenhar triângulo");
Teste de classe pública
public static void main (String [] args)
Forma s;
s = nova Shape ();
s.draw ();
s = novo círculo ();
s.draw ();
s = novo triângulo ();
s.draw ();
De acordo com o programa acima, a classe Shape possui um método draw (). Class Circle e class Triangle estendem a classe Shape. O círculo de classe e o triângulo de classe podem herdar os atributos e métodos da classe Shape. Portanto, a classe Shape é a super classe ou classe pai. Class Circle e Class Triangle são subclasses ou classes derivadas. Essas classes também possuem o método draw () com suas próprias implementações. Portanto, o método draw () na superclasse é substituído.
No método principal, objetos diferentes são chamados. Há uma variável de referência do tipo Shape, que é s. Então, s invoca o método de acordo com a classe específica. Em tempo de compilação, o compilador fará referência apenas ao método de empate de superclasse. Quando a execução real começa, isso leva à execução de diferentes métodos de desenho. Primeiro, s estará apontando para o objeto do tipo Shape. Portanto, ele chamará o método draw na classe Shape. Então, os s apontarão o objeto do tipo Circle e chamarão o método draw da classe Circle. Finalmente, s estará se referindo ao objeto do tipo Triangle e invocará o método draw na classe Triangle. Mesmo que a variável de referência seja do tipo Shape, a ligação depende do tipo de objeto. Esse conceito é conhecido como ligação dinâmica. As informações são fornecidas em tempo de execução, portanto, a velocidade de execução é mais lenta em comparação com a ligação estática.
Ligação estática vs Ligação dinâmica | |
Ligação estática é o tipo de ligação que coleta todas as informações necessárias para chamar uma função durante o tempo de compilação. | Ligação dinâmica é o tipo de ligação que coleta todas as informações necessárias para chamar uma função durante o tempo de execução. |
Tempo de ligação | |
Ligação estática ocorre em tempo de compilação. | A ligação dinâmica ocorre no tempo de execução. |
Funcionalidade | |
Ligação estática usa informações de tipo para ligação. | A ligação dinâmica usa objetos para resolver a ligação. |
Objeto real | |
A ligação estática não usa um objeto real para ligação. | Ligação dinâmica, use o objeto real para ligação. |
Sinônimos | |
A ligação estática também é conhecida como ligação antecipada. | A ligação dinâmica também é conhecida como ligação tardia. |
Execução | |
A velocidade de execução é rápida na ligação estática. | A velocidade de execução é baixa na ligação dinâmica. |
Exemplo | |
A ligação estática é usada na sobrecarga do método. | A ligação dinâmica é usada na substituição de método. |
Existe um link entre uma chamada de método e a definição de método. É conhecido como ligação. Existem dois tipos de ligações denominadas ligação estática e ligação dinâmica. A diferença entre ligação estática e ligação dinâmica é que, na ligação estática, a ligação é resolvida no tempo de compilação, enquanto a ligação dinâmica é resolvida no tempo de execução, que é o tempo real de execução. Como as informações necessárias são fornecidas antes do tempo de execução, a ligação estática é rápida na execução em comparação com a ligação dinâmica.
Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre ligação estática e ligação dinâmica
1.Java Interview 04 - Static Binding Vs Dynamic Binding, Mahika Tutorials, 27 de dezembro de 2017. Disponível aqui