Рубрики
Без рубрики

Полиморфизм во время выполнения Полиморфизм во время компиляции и полиморфизм во время выполнения

В этом посте вы поймете, что такое полиморфизм времени выполнения? Что такое полиморфизм во время компиляции… С тегами java, учебник, для начинающих, ооп.

В этом посте вы поймете,

  • Что такое полиморфизм во время выполнения?
  • Что такое полиморфизм во время компиляции?
  • Что происходит во время компиляции и во время выполнения?

Полиморфизм во время выполнения

Вы можете посмотреть на следующие классы.

//Parent class
class Parent {
    public void eat(){
        System.out.println("Parent - eat()");
    }
}

//Child class
class Child extends Parent {

    @Override
    public void eat() {
        System.out.println("Child - eat()");
    }
}

public class OOPDemo {

    public static void main(String args[]){
        Parent obj = new Child();
        obj.eat();
    }
}

В этом примере я создал родительский класс, дочерний класс и основной класс. Затем я создал Дочерний объект по родительской ссылке . Теперь давайте проверим, что происходит во время компиляции и во время выполнения.

Время компиляции

  • Во время компиляции он заботится о родительской ссылке.
  • Потому что объекты создаются во время выполнения.
  • Во-первых, он проверяет, есть ли какой-либо метод eat() в родительском классе.
  • В этом примере родительский класс имеет метод eat().
  • Таким образом, это не дает никаких исключений во время компиляции, и компиляция будет успешной.

Время выполнения

  • Во время выполнения он обрабатывает дочернюю ссылку и создает новый дочерний объект.
  • Затем он проверяет, есть ли какой-либо метод eat() в дочернем классе.
  • В ребенке также есть метод eat().
  • Затем этот метод будет вызван во время выполнения.
  • Это означает, что создание объекта происходит во время выполнения JVM, и среда выполнения отвечает за вызов метода eat(), который нужно вызвать.
  • Вот почему это называется полиморфизмом во время выполнения ( Динамический полиморфизм )

Полиморфизм во время компиляции

class Animal{

    public void eat(){
        System.out.println("Eat method");
    }

    public void eat(int quantity){
        System.out.println("Eat method with quantity");
    }
}

public class ReferenceDemo {
    public static void main(String args[]){
        Animal animal = new Animal();
        animal.eat();
    }
}

В этом случае один класс имеет одни и те же методы с двумя разными параметрами. Как вы знаете, это называется перегрузка метода .

Время компиляции

  • Во время компиляции он проверяет метод animal.eat() в классе Animal.
  • В классе animal нет метода target().
  • В соответствии со списком параметров он вызовет, какой метод следует вызвать.
  • Тогда компиляция в порядке.

Время выполнения

  • Во время выполнения он создает объект того же типа животного.
  • Затем он проверяет то же самое, что и во время компиляции.
  • Это означает, что времени компиляции достаточно, чтобы проверить, какой метод следует вызывать.
  • Вот почему это называется полиморфизмом времени компиляции ( Статический полиморфизм ).

Заключительные слова!

Полиморфизм по времени переопределения – временной полиморфизм

Дополнительная информация: www.javafoundation.xyz

Оригинал: “https://dev.to/raviyasas/compile-time-polymorphism-vs-run-time-polymorphism-fin”