Polimorfismo em Java

O objetivo deste post é fornecer aos alunos uma melhor compreensão do polimorfismo Java , apresentando 2 tipos de polimorfismo:

  1. Polimorfismo de tempo de compilação.
  2. Polimorfismo em tempo de execução.


Polimorfismo Java – Tempo de Compilação

O polimorfismo em tempo de compilação pode ser alcançado por meio de sobrecarga de método. Ter múltiplas classes relacionadas à herança resulta em polimorfismo , que significa “muitas formas”.

A herança nos permite utilizar os atributos e métodos de outra classe exatamente como descrevemos no capítulo anterior.

O polimorfismo usa esses métodos para realizar várias tarefas. Usando esta técnica, podemos realizar a mesma ação de maneiras diferentes.

Além disso, podemos usar a sobrecarga e substituição do método Java para implementar o polimorfismo Java .

Lembre-se: ter vários métodos com o mesmo nome é conhecido como sobrecarga de método.

Por exemplo, suponha uma MotorBikes (superclasse) com um método found_name().

As motos podem ser classificadas como Cruisers, SportsBikes, Scooters e Touring Bikes.

Eles também têm seus respectivos fundadores (Arthur Hugo Cecil Gibson de scooters, John Foster Fraser de bicicletas de turismo, etc.):

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class MotorBikes{
void founder_name(){
System.out.println("The Founder of Motorcycle is: Giuseppe Murnigott ");
}
}
class SportsBikes extends MotorBikes{
void founder_name(){
System.out.println("The Founder of SportsBikes is: Gottlieb Daimler ");
}
}
class TouringBikes extends MotorBikes{
void founder_name(){
System.out.println("The Founder of TouringBikes is: John Foster Fraser ");
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Os dispositivos eletrônicos também podem ser categorizados em robôs, telefones celulares, laptops e outros. Além disso, eles têm um método chamado mrx_desc() que se descreve:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Electronic_Gadgets{
void mrx_desc()
{
System.out.println("There is a variety of gadgets in Electronics");
}
}
class MobilePhones extends Electronic_Gadgets{
void mrx_desc()
{
System.out.println("Mobile Phone is one of the type of an Electronic gadgets");
}
}
class Robots extends Electronic_Gadgets{
void mrx_desc()
{
System.out.println("Robot is the most modern type of an Electronic gadget");
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Lembre-se: usamos a palavra-chave extends no capítulo Herança para herdar de classes.

Os objetos Celulares e Robôs agora podem ser criados e mrx_desc() pode ser chamado em cada um:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Robots extends Electronic_Gadgets{
void mrx_desc()
{
System.out.println("Robot is the most modern type of an Electronic gadget");
}
}
public class Polymorphism1 {
public static void main(String[] args) {
MobilePhones my_object1=new MobilePhones(); // Object of Subclass(MobilePhones) is created here
my_object1.mrx_desc(); // Method named mrx_desc() is used here
Robots my_object2=new Robots(); // Object of Subclass(Robot) is created here
my_object2.mrx_desc(); // Method is invoked using my_object_2
}
// Output 1: Mobile Phone is one of the typeof an Electronic gadgets
// Output 2: Robot is the most modern typeof an Electronic gadgets
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Polimorfismo Java – Tempo de Execução

Um método substituído é chamado em tempo de execução em vez de compilado, e isso é conhecido como polimorfismo em tempo de execução ou despacho de método dinâmico.

Java Polimorfismo funciona com base no princípio de “Upcasting”.

Upcasting é um processo de referenciar o objeto da Subclasse por uma variável de referência da Superclasse é conhecido como upcasting.

O exemplo abaixo define o fenômeno do polimorfismo em tempo de execução:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class MotorBikes{
void founder_name(){
System.out.println("The Founder of Motorcycle is: Giuseppe Murnigott ");
}
}
class SportsBikes extends MotorBikes{
void founder_name(){
System.out.println("The Founder of SportsBikes is: Gottlieb Daimler ");
}
public static void main(String[] args) {
MotorBikes my_obj=new SportsBikes(); // This is an example of runtime polymorphism (variable of Superclass refers to the object of subclass)
my_obj.founder_name(); // Prints the method of the extended class
}
// Output: The Founder of SportsBikes is: Gottlieb Daimler
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

O exemplo abaixo ilustra o uso de variáveis ​​implementando o polimorfismo Runtime.

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class ElectronicGadgets{
String count="7.68 Billion";
void mrx_desc()
{
System.out.println("There is a variety of gadgets in Electronics");
}
}
class Mobile_Phones extends ElectronicGadgets{
String count="7.12 Billion";
void mrx_desc()
{
System.out.println("Mobile Phone is one of the type of an Electronic gadgets");
}
public static void main(String[] args) {
ElectronicGadgets my_obj=new Mobile_Phones(); // Runtime Polymorphism is implemented here
my_obj.mrx_desc(); // Object calls method mrx_desc() of the Mobile Phones class
System.out.println("Total Electronic gadgets users: "+my_obj.count); // Prints value of count from the parent (ElectronicGadgets class)
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Usando “herança” e “polimorfismo”: por que e quando?

Ajuda na reutilização de código: ao criar uma nova classe, reutilize atributos e métodos de uma classe existente.

 

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone