"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O que é polimorfismo? Explorando relações tipo-objeto em Java

O que é polimorfismo? Explorando relações tipo-objeto em Java

Publicado em 2024-12-21
Navegar:318

Ao estudar Java, encontrei o conceito de polimorfismo. Tenho tendência a compreender os princípios fundamentais antes de me aprofundar no uso prático, por isso documentei minha interpretação aqui.

Explicações comuns de polimorfismo que vi

O significado original de polimorfismo é "diversidade". Porém, no contexto deste artigo, refere-se à capacidade de uma variável conter objetos de diferentes tipos, desde que haja um relacionamento por meio de herança de classe ou implementação de interface, sem causar erros.

Correspondência de tipo típica

Geralmente, o tipo de uma variável corresponde ao tipo do objeto a que ela faz referência.

Animal animal = new Animal();

No entanto, quando o objeto estende uma classe, a variável pode ser tratada como o tipo da superclasse.

Animal animal = new Dog(); // Dog extends Animal

Além disso, se um objeto implementa uma interface, ele pode ser tratado como o tipo de interface.

// Interface definition
interface Animal {
    void makeSound(); // Method in the interface
}

// Classes implementing the interface
class Dog implements Animal {
    public void makeSound() {
        System.out.println("Woof!"); // Dog-specific implementation
    }
}

class Cat implements Animal {
    public void makeSound() {
        System.out.println("Meow!"); // Cat-specific implementation
    }
}

// Main method
public class Main {
    public static void main(String[] args) {
        // Assign objects to variables of the interface type
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        // Call the interface method
        myDog.makeSound(); // Outputs "Woof!"
        myCat.makeSound(); // Outputs "Meow!"
    }
}

Isso nos permite lidar com diferentes classes como o mesmo tipo, permitindo uma codificação flexível.

O que é um tipo?

Ao discutir como o tipo de uma variável e o tipo de um objeto diferem, levanta-se a questão: o que exatamente é um "tipo"? Com base na minha análise, concluí que um tipo serve aos seguintes propósitos:

  • Declaração: especifica que tipo de dados são armazenados em uma região de memória.
  • Tipo: determina como os dados armazenados são utilizados.

Referenciando o exemplo anterior:

Animal animal = new Dog(); // Dog extends Animal

Isso implica que a memória é alocada para Dog, mas a variável interpreta o conteúdo como Animal. O conceito pode ser visualizado assim:

What Is Polymorphism? Exploring Type-Object Relations in Java

Um tipo atua como uma lente de filtro, determinando como os dados são percebidos. Ao mudar a lente, você pode se concentrar em métodos comuns na superclasse ou em métodos específicos por meio de interfaces.

Por que nem sempre declarar com a superclasse?

Pode-se perguntar por que nem sempre declaramos variáveis ​​com a superclasse se a vantagem do polimorfismo é lidar com métodos comuns entre classes. A razão é que a memória só é alocada para os dados da superclasse nesses casos.

What Is Polymorphism? Exploring Type-Object Relations in Java

Embora seja possível converter uma subclasse em uma superclasse (upcasting), o inverso não é verdadeiro. Isso ocorre porque uma subclasse inclui dados da superclasse mais seus próprios dados exclusivos. Portanto, a memória é pré-alocada para a subclasse, permitindo o uso de métodos específicos da subclasse por meio de upcasting.

No caso de interfaces

As interfaces também atuam como tipos, e seu papel como lentes de filtro para processar os dados armazenados na memória do objeto é conceitualmente semelhante ao das classes. Os métodos invocados através da interface são determinados pelo tipo do objeto, não pelo tipo da variável (ligação dinâmica). Isso reforça a ideia de que o tipo da variável atua apenas como um filtro, permitindo-nos utilizar os dados filtrados.

Conclusão

O polimorfismo é útil em cenários onde processos comuns precisam ser unificados e, ao mesmo tempo, aproveitar características individuais. Através da minha exploração, compreendi melhor que, embora o layout da memória de um objeto permaneça determinado pelo seu tipo, o tipo da variável controla como essa memória é interpretada – uma realização significativa para mim.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/yo-shi/what-is-polymorphism-exploring-type-and-object-relations-nmh?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3