«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Что такое полиморфизм? Исследование отношений типа-объекта в Java

Что такое полиморфизм? Исследование отношений типа-объекта в Java

Опубликовано 21 декабря 2024 г.
Просматривать:280

Изучая Java, я столкнулся с понятием полиморфизма. У меня есть склонность схватывать основополагающие принципы, прежде чем углубляться в их практическое использование, поэтому я задокументировал здесь свою интерпретацию.

Общие объяснения полиморфизма, которые я видел

Первоначальное значение полиморфизма — «разнообразие». Однако в контексте этой статьи это относится к способности переменной хранить объекты разных типов, пока существует связь посредством наследования классов или реализации интерфейса, без возникновения ошибок.

Типичное соответствие типов

Как правило, тип переменной соответствует типу объекта, на который она ссылается.

Animal animal = new Animal();

Однако, когда объект расширяет класс, переменную можно рассматривать как тип суперкласса.

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

Кроме того, если объект реализует интерфейс, его можно рассматривать как тип интерфейса.

// 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!"
    }
}

Это позволяет нам обрабатывать разные классы как один и тот же тип, обеспечивая гибкое кодирование.

Что такое тип?

При обсуждении того, чем отличаются тип переменной и тип объекта, возникает вопрос: что такое «тип»? На основе моего анализа я пришел к выводу, что тип служит следующим целям:

  • Объявление: указывает, какие данные хранятся в области памяти.
  • Тип: определяет, как будут использоваться сохраненные данные.

Ссылка на предыдущий пример:

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

Это означает, что память выделена для Dog, но переменная интерпретирует содержимое как Animal. Эту концепцию можно визуализировать следующим образом:

What Is Polymorphism? Exploring Type-Object Relations in Java

Тип действует как линза-фильтр, определяя, как воспринимаются данные. Изменяя объектив, вы можете сосредоточиться на общих методах суперкласса или конкретных методах через интерфейсы.

Почему бы не всегда объявлять это с помощью суперкласса?

Можно задаться вопросом, почему мы не всегда объявляем переменные в суперклассе, если преимуществом полиморфизма является обработка общих методов во всех классах. Причина в том, что в таких случаях память выделяется только для данных суперкласса.

What Is Polymorphism? Exploring Type-Object Relations in Java

Хотя можно привести подкласс к суперклассу (повышенное преобразование), обратное неверно. Это связано с тем, что подкласс включает в себя данные суперкласса, а также свои собственные уникальные данные. Таким образом, память предварительно выделяется для подкласса, что позволяет использовать методы, специфичные для подкласса, посредством повышающего преобразования.

В случае интерфейсов

Интерфейсы также действуют как типы, и их роль фильтрующих линз для обработки данных, хранящихся в памяти объекта, концептуально аналогична роли классов. Методы, вызываемые через интерфейс, определяются типом объекта, а не типом переменной (динамическая привязка). Это подтверждает идею о том, что тип переменной действует просто как фильтр, позволяя нам использовать отфильтрованные данные.

Заключение

Полиморфизм полезен в сценариях, где необходимо унифицировать общие процессы, одновременно используя индивидуальные характеристики. В результате моего исследования я лучше понял, что, хотя расположение объекта в памяти по-прежнему определяется его типом, тип переменной контролирует интерпретацию этой памяти — для меня это важное осознание.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/yo-shi/what-is-polymorphism-exploring-type-and-object-relations-nmh?1. В случае нарушения прав обращайтесь по адресу [email protected]. удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3