Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Polimorfismo Java

Polimorfismo Java


Neste tutorial, aprenderemos sobre o polimorfismo Java e sua implementação com a ajuda de exemplos.

O polimorfismo é um conceito importante da programação orientada a objetos. Significa simplesmente mais de uma forma.

Ou seja, uma mesma entidade (método ou operador ou objeto) pode realizar diferentes operações em diferentes cenários.


Exemplo:polimorfismo Java

class Polygon {

  // method to render a shape
  public void render() {
    System.out.println("Rendering Polygon...");
  }
}

class Square extends Polygon {

  // renders Square
  public void render() {
    System.out.println("Rendering Square...");
  }
}

class Circle extends Polygon {

  // renders circle
  public void render() {
    System.out.println("Rendering Circle...");
  }
}

class Main {
  public static void main(String[] args) {
    
    // create an object of Square
    Square s1 = new Square();
    s1.render();

    // create an object of Circle
    Circle c1 = new Circle();
    c1.render();
  }
}

Saída
Rendering Square...
Rendering Circle...

No exemplo acima, criamos uma superclasse:Polygon e duas subclasses:Quadrado e Círculo . Observe o uso do render() método.

O objetivo principal do render() é renderizar a forma. No entanto, o processo de renderização de um quadrado é diferente do processo de renderização de um círculo.

Portanto, o render() O método se comporta de maneira diferente em diferentes classes. Ou podemos dizer render() é polimórfico.

Por que polimorfismo?


O polimorfismo nos permite criar um código consistente. No exemplo anterior, também podemos criar métodos diferentes:renderSquare() e renderCircle() para renderizar Quadrado e Círculo , respectivamente.

Isso funcionará perfeitamente. No entanto, para cada forma, precisamos criar métodos diferentes. Isso tornará nosso código inconsistente.

Para resolver isso, o polimorfismo em Java nos permite criar um único método render() que se comportarão de maneira diferente para formas diferentes.

Observação :O print() O método também é um exemplo de polimorfismo. É usado para imprimir valores de diferentes tipos como char , int , string , etc


Podemos obter polimorfismo em Java usando as seguintes maneiras:
  1. Substituição de método
  2. Método de sobrecarga
  3. Sobrecarga do operador

Substituição do método Java


Durante a herança em Java, se o mesmo método estiver presente na superclasse e na subclasse. Então, o método na subclasse substitui o mesmo método na superclasse. Isso é chamado de substituição de método.

Neste caso, o mesmo método realizará uma operação na superclasse e outra operação na subclasse. Por exemplo,

Exemplo 1:polimorfismo usando substituição de método

class Language {
  public void displayInfo() {
    System.out.println("Common English Language");
  }
}

class Java extends Language {
  @Override
  public void displayInfo() {
    System.out.println("Java Programming Language");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Java class
    Java j1 = new Java();
    j1.displayInfo();

    // create an object of Language class
    Language l1 = new Language();
    l1.displayInfo();
  }
}

Saída :
Java Programming Language
Common English Language

No exemplo acima, criamos uma superclasse chamada Language e uma subclasse chamada Java . Aqui, o método displayInfo() está presente em ambos Idioma e Java .

O uso de displayInfo() é imprimir as informações. No entanto, está imprimindo informações diferentes em Language e Java .

Com base no objeto usado para chamar o método, as informações correspondentes são impressas.

Observação :O método que é chamado é determinado durante a execução do programa. Portanto, a substituição de método é um polimorfismo de tempo de execução .

2. Sobrecarga do método Java


Em uma classe Java, podemos criar métodos com o mesmo nome se diferirem em parâmetros. Por exemplo,
void func() { ... }
void func(int a) { ... }
float func(double a) { ... }
float func(int a, float b) { ... }



Isso é conhecido como sobrecarga de métodos em Java. Aqui, o mesmo método realizará operações diferentes com base no parâmetro.

Exemplo 3:polimorfismo usando sobrecarga de método

class Pattern {

  // method without parameter
  public void display() {
    for (int i = 0; i < 10; i++) {
      System.out.print("*");
    }
  }

  // method with single parameter
  public void display(char symbol) {
    for (int i = 0; i < 10; i++) {
      System.out.print(symbol);
    }
  }
}

class Main {
  public static void main(String[] args) {
    Pattern d1 = new Pattern();

    // call method without any argument
    d1.display();
    System.out.println("\n");

    // call method with a single argument
    d1.display('#');
  }
}

Saída :
**********

##########

No exemplo acima, criamos uma classe chamada Pattern . A classe contém um método chamado display() que está sobrecarregado.
// method with no arguments
display() {...}

// method with a single char type argument
display(char symbol) {...}

Aqui, a função principal de display() é imprimir o padrão. No entanto, com base nos argumentos passados, o método está realizando diferentes operações:
  • imprime um padrão de * , se nenhum argumento for passado ou
  • imprime o padrão do parâmetro, se um único char argumento de tipo é passado.

Observação :O método que é chamado é determinado pelo compilador. Por isso, também é conhecido como polimorfismo em tempo de compilação.

3. Sobrecarga do operador Java


Alguns operadores em Java se comportam de maneira diferente com operandos diferentes. Por exemplo,
  • + operador está sobrecarregado para realizar adição numérica, bem como concatenação de strings, e
  • operadores como & , | e ! estão sobrecarregados para operações lógicas e bit a bit.

Vamos ver como podemos obter polimorfismo usando sobrecarga de operadores.

O + operador é usado para adicionar duas entidades. No entanto, em Java, o + operador executa duas operações.

1. Quando + é usado com números (números inteiros e números de ponto flutuante), ele realiza adição matemática. Por exemplo,
int a = 5;
int b = 6;

// + with numbers
int sum = a + b;  // Output = 11

2. Quando usamos o + operador com strings, ele realizará a concatenação de strings (juntará duas strings). Por exemplo,
String first = "Java ";
String second = "Programming";

// + with strings
name = first + second;  // Output = Java Programming

Aqui, podemos ver que o + operador está sobrecarregado em Java para realizar duas operações:adição e concatenação .

Observação :Em linguagens como C++, podemos definir operadores para funcionar de maneira diferente para operandos diferentes. No entanto, Java não suporta sobrecarga de operador definida pelo usuário.

Variáveis ​​polimórficas


Uma variável é chamada polimórfica se se referir a valores diferentes sob condições diferentes.

Variáveis ​​de objeto (variáveis ​​de instância) representam o comportamento de variáveis ​​polimórficas em Java. Isso ocorre porque as variáveis ​​de objeto de uma classe podem se referir a objetos de sua classe, bem como a objetos de suas subclasses.

Exemplo:variáveis ​​polimórficas

class ProgrammingLanguage {
  public void display() {
    System.out.println("I am Programming Language.");
  }
}

class Java extends ProgrammingLanguage {
  @Override
  public void display() {
    System.out.println("I am Object-Oriented Programming Language.");
  }
}

class Main {
  public static void main(String[] args) {

    // declare an object variable
    ProgrammingLanguage pl;

    // create object of ProgrammingLanguage
    pl = new ProgrammingLanguage();
    pl.display();

    // create object of Java class
    pl = new Java();
    pl.display();
  }
}

Saída :
I am Programming Language.
I am Object-Oriented Programming Language.

No exemplo acima, criamos uma variável de objeto pl da ProgrammingLanguage classe. Aqui, pl é uma variável polimórfica. Isto é porque,
  • Na declaração pl = new ProgrammingLanguage() , pl consulte o objeto da ProgrammingLanguage aula.
  • E, na declaração pl = new Java() , pl consulte o objeto do Java aula.

Este é um exemplo de upcasting em Java.

Java

  1. Operadores Java
  2. Interface Java
  3. Java try-with-resources
  4. Anotações Java
  5. Tipos de anotação Java
  6. Método String Length () em Java:como encontrar com exemplo
  7. Método Java String indexOf() com substring e exemplos
  8. Método Java String charAt() com exemplo
  9. Java String EndsWith() Método com Exemplo
  10. Java String replace(), replaceAll() e método replaceFirst()