Types of polymorphism in java-Runtime and Compile time polymorphism

In The last tutorial we discussed Polymorphism in Java. Neste guia veremos tipos de polimorfismo. Existem dois tipos de polimorfismo em java:
1) Estática Polimorfismo também conhecido como tempo de compilação polimorfismo
2) Dinâmica de Polimorfismo também conhecido como tempo de execução do polimorfismo

tempo de Compilação Polimorfismo (ou Estática polymorphism)

Polimorfismo que é resolvido durante o compilador de tempo é conhecido como polimorfismo estático. O overloading método é um exemplo de polimorfismo de tempo de compilação.
sobrecarga do método: isto nos permite ter mais de um método com o mesmo nome, se os parâmetros dos métodos são diferentes em número, sequência e tipos de dados de parâmetros. Já discutimos o overloading do método aqui: se você não leu esse guia, veja: sobrecarga do método em Java

exemplo de polimorfismo estático

sobrecarga do método é uma das formas como java suporta polimorfismo estático. Aqui temos duas definições do mesmo método add() que adicionar método seria chamado é determinado pela lista de parâmetros no momento da compilação. Essa é a razão pela qual isso também é conhecido como polimorfismo de tempo de compilação.

class SimpleCalculator{ int add(int a, int b) { return a+b; } int add(int a, int b, int c) { return a+b+c; }}public class Demo{ public static void main(String args) { SimpleCalculator obj = new SimpleCalculator(); System.out.println(obj.add(10, 20)); System.out.println(obj.add(10, 20, 30)); }}

saída:

3060

polimorfismo em tempo de execução (ou polimorfismo dinâmico)

é também conhecido como “Dynamic Method Dispatch”. Polimorfismo dinâmico é um processo no qual uma chamada para um método sobreposto é resolvida em tempo de execução, é por isso que é chamado de polimorfismo em tempo de execução. I have already discussed method priming in detail in a separate tutorial, refer it: Method Primering in Java.

exemplo
neste exemplo temos duas classes ABC e XYZ. ABC é uma classe de pais e XYZ é uma classe de crianças. A classe de crianças está sobrepondo o método mymetod() da classe de pais. Neste exemplo, temos objeto de classe-filho atribuído à referência da classe-mãe assim, a fim de determinar qual método seria chamado, o tipo do objeto seria determinado em tempo de execução. É o tipo de objeto que determina qual versão do método seria chamada (não o tipo de referência).

para compreender o conceito de sobrepor, você deve ter o conhecimento básico da herança em Java.

class ABC{ public void myMethod(){System.out.println("Overridden Method"); }}public class XYZ extends ABC{ public void myMethod(){System.out.println("Overriding Method"); } public static void main(String args){ABC obj = new XYZ();obj.myMethod(); }}

resultado:

Overriding Method

When an overridden method is called through a reference of parent class, then type of the object determines which method is to be executed. Assim, esta determinação é feita em tempo de execução.
uma vez que ambas as classes, classe de filhos e classe de pais têm o mesmo método animalSound. Qual a versão do método(classe de filhos ou classe de pais) será chamada é determinada em tempo de execução pela JVM.

alguns exemplos mais importantes:

ABC obj = new ABC();obj.myMethod();// This would call the myMethod() of parent class ABCXYZ obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZABC obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZ

no terceiro caso, o método da classe infantil deve ser executado porque Qual método deve ser executado é determinado pelo tipo de objeto e como o objeto pertence à classe infantil, a versão da classe infantil de mymetod() é chamada.

Deixe uma resposta

O seu endereço de email não será publicado.

More: