Polimorfismo em Java

Polimorfismo em Java é um conceito pelo qual podemos realizar uma única acção de diferentes maneiras. O polimorfismo é derivado de 2 palavras gregas: poly e morphs. A palavra “poly” significa muitas e “morphs” significa formas. Assim, polimorfismo significa muitas formas.

Existem dois tipos de polimorfismo em Java: polimorfismo de tempo de compilação e polimorfismo de tempo de execução. Podemos realizar polimorfismo em java por sobrecarga de métodos e sobreposição de métodos.

Se sobrecarregar um método estático em Java, é o exemplo de polimorfismo de tempo de compilação. Aqui, vamos concentrar-nos no polimorfismo em tempo de execução em java.

Polimorfismo em tempo de execução em Java

Polimorfismo em tempo de execução ou Despacho Dinâmico de Métodos é um processo em que uma chamada para um método sobreposto é resolvida em tempo de execução em vez de tempo de compilação.

Neste processo, um método sobreposto é chamado através da variável de referência de uma superclasse. A determinação do método a ser chamado baseia-se no objecto a ser referido pela variável de referência.

P>Deixamos primeiro compreender o upcasting antes do Polimorfismo de Tempo de Execução.

Upcasting

Se a variável de referência da classe Pai se referir ao objecto da classe Criança, é conhecida como upcasting. Por exemplo:

Upcasting em Java

Para upcasting, podemos usar a variável de referência do tipo de classe ou um tipo de interface. Por exemplo:

Aqui, a relação da classe B seria:

B IS-A AB IS-A IB IS-A Object

Since Object is the root class of all classes in Java, so we can write B IS-A Object.

Exemplo de Polimorfismo em Java

Neste exemplo, estamos a criar duas classes Bike e Splendor. A classe Splendor estende a classe Bike e substitui o seu método run(). Estamos a chamar o método run pela variável de referência da classe Parent. Uma vez que se refere ao objecto subclasse e o método subclasse sobrepõe-se ao método Parent class, o método subclasse é invocado em tempo de execução.

Uma vez que a invocação do método é determinada pelo JVM não compilador, é conhecido como polimorfismo de tempo de execução.

Test it Now

Output:

running safely with 60km.

Java Runtime Polymorphism Example: Banco

Considerar um cenário em que o Banco é uma classe que fornece um método para obter a taxa de juro. No entanto, a taxa de juro pode diferir de acordo com os bancos. Por exemplo, os bancos SBI, ICICI, e AXIS fornecem 8,4%, 7,3%, e 9,7% taxa de juro.

Java Runtime Polymorphism exemplo de banco

Nota: Este exemplo também é dado no método prevalecente mas não houve upcasting.

Test it Now

Output:

SBI Rate of Interest: 8.4ICICI Rate of Interest: 7.3AXIS Rate of Interest: 9.7

Java Runtime Polymorphism Example: Shape

Test it Now

Output:

drawing rectangle...drawing circle...drawing triangle...

Java Runtime Polymorphism Example: Animal

Test it Now

Output:

eating bread...eating rat...eating meat...

Java Runtime Polymorphism with Data Member

Um método é anulado, não os membros de dados, pelo que o polimorfismo em tempo de execução não pode ser alcançado pelos membros de dados.

No exemplo dado abaixo, ambas as classes têm um limite de velocidade dos membros de dados. Estamos a aceder ao membro de dados pela variável de referência da classe Pai que se refere ao objecto da subclasse. Uma vez que estamos a aceder ao membro de dados que não está sobreposto, por conseguinte, este acederá sempre ao membro de dados da classe Pai.

Regra: O polimorfismo em tempo de execução não pode ser alcançado pelos membros de dados.

Testar agora

Saída:

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *