Какой пример динамического полиморфизма в Java в реальном времени

Каков пример динамического полиморфизма в Java в реальном времени?

Мне столько раз задавали этот вопрос в интервью но не получил реального ответа. Код:

class A {
    public void m1() {}
}

class B extends A {
    public void m1() {}
}

class manage {
    A a1 = new A();
    B b1 = new B();
    A a2 = new B();

    //when i will call A's m1 it will call m1 of A
    a1.m1();

    //when i will call B's m1 it will call  m1 of B
    b1.m1();

    //when i will call B's m1
    a2.m1();

}

в приведенном выше коде, посмотрев, я могу сказать, чей объект будет вызываться, тогда почему его полиморфизм времени выполнения

Кто-нибудь может помочь в правильном примере реального времени времени выполнения / динамического полиморфизма ??

И, конечно же: приведенный выше код даже не будет компилироваться, поскольку вы не можете иметь эти вызовы методов просто в теле этого класса. Избегайте этого: при размещении «настоящего кода» убедитесь, что это компилирует. Все остальное быстро введет ваших читателей в заблуждение, что приведет к негативным отзывам.

GhostCat 17.08.2018 14:57

Спасибо за редактирование .. Буду иметь в виду форматирование кода и компиляцию кода в следующий раз на подопечных

Ankur Nirmalkar 18.08.2018 15:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
508
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

"Dynamic polymorphism is the polymorphism existed at run-time".

Это означает, что компилятор Java не понимает, какой метод вызывается во время компиляции. Только JVM решает, какой метод вызывается во время выполнения.

В вашем примере компилятор не знает поведения a2.m1(). Однако во время выполнения JVM вызовет код, определенный в классе B.

class A {
    public void m1(){
        System.out.println("Inside A's m1 method");
    }
}

class B extends A {
    // overriding m1()
     public void m1(){
            System.out.println("Inside B's m1 method");
     }
}

class C extends A {
     public void m1(){
            System.out.println("Inside C's m1 method");
     }
}
// Driver class
class Dispatch {
    public static void main(String args[]) {
        // object of type A
        A a = new A();
        a.m1(); // calling m1 of A

        a = new B();
        a.m1(); // calling m1 of B

        a = new C();
        a.m1(); // calling m1 of C

    }
}

Результаты: Inside A's m1 method Inside B's m1 method Inside C's m1 method

Ответ принят как подходящий

Давайте немного изменим ваш пример кода. Вместо тестового класса, который определяет объекты для тестирования, мы предлагаем только метод, принимающий некоторые аргументы:

public void testCalls(A a1, A b1, A b2) {
  a1.m1();
...

Вы все еще можете сказать, что произойдет? «Хм, это будет зависеть от того, что будет передано в вызов метода ?!»

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

Таким образом: важен тип объекта истинный во время выполнения. Конечно, когда вы строить простой пример, вы всегда знаете этот истинный тип. Но вещи, которые имеют значение в реальном мире, попросту не так просты.

Не могли бы вы разместить полный пример для лучшего понимания .. Я понял, что этот небольшой сложный пример поможет, но я ищу то же самое. лучший пример, который может дать мне много понимания ..

Ankur Nirmalkar 18.08.2018 15:55

Я не могу обещать, что смогу сделать это до понедельника. Пожалуйста, напишите мне, если вы не получите известие от меня примерно до вторника!

GhostCat 18.08.2018 17:04

Привет Ghostcat, как мы обсуждали, жду ответа

Ankur Nirmalkar 22.08.2018 09:29

Как следует из названия, это происходит в реальном времени или во время выполнения.

Другие вопросы по теме