Вступ до поліморфізму виконання на Java

У цій статті ми дізнаємось про поліморфізм під час виконання Java. "Полі" означає "багато", а "морф" означає "тип". Отже, термін поліморфізм вказує на одне й те ж саме різних типів. Тут ми побачимо, як Java архівує поліморфізм під час виконання, що означає після компіляції, але перед запуском коду.

Синтаксис:

Для поліморфізму під час виконання Java слід дотримуватися основного синтаксису Java з анотаціями. @Override може бути використана тут, щоб конкретно вказати, який метод ми хочемо замінити.

Як працює поліморфізм під час виконання Java?

Поліморфізм під час виконання працює на Яві методом переосмислення. Перевизначення методу відбувається, коли об'єкти мають те саме ім'я методу та аргументи та тип, як і його батьківський клас, але мають різні функції. Якщо дочірній клас містить у собі такий тип методу, ми називаємо його методом, що перекривається.

Чому його називають поліморфізмом під час виконання?

коли ми називаємо перекритий метод дочірнього класу через його посилання на батьківський тип (це явище в Java називається "Оновлення"), тоді тип об'єкта вказує, який метод або функціональність буде викликатися. Прийняття цього рішення відбувається під час виконання JVM після складання коду. Звідси це називається поліморфізмом тривалості.

Його також називають "динамічним методом відправки". Причина названа так через те, що функціональність методу динамічно визначається за час виконання відповідно до об'єкта JVM

Його також називають "пізньою прив'язкою", оскільки прив'язка методу та об'єкта, що означає функціональність методу, який відображатиметься об'єктом, вирішується пізно, тобто після компіляції.

Правила та обмеження в поліморфізмі Runtim e

Нижче наведено деякі правила та обмеження поліморфізму виконання:

Правила поліморфізму виконання

  • Методи дочірнього та батьківського класу повинні мати однакову назву.
  • Методи дочірнього та батьківського класу повинні мати однаковий параметр.
  • IS-A відносини є обов'язковими (спадкування).

Обмеження поліморфізму під час виконання

  • Не можна перекривати приватні методи батьківського класу.
  • Не можна перекрити Остаточні методи.
  • Неможливо перекрити статичні методи.

Приклади поліморфізму виконання на Java

Тут ми обговоримо кілька прикладів коду поліморфізму Run time.

Приклад №1

У цьому прикладі ми покажемо, як метод showcase () відображає різні повідомлення залежно від того, з яким типом об'єкта він пов'язаний. Коли він пов'язаний з типом "Батьки", він відображає повідомлення з батьківського класу. В той час, коли він пов'язаний з типом "Діти", він відображає повідомлення дочірнього класу.

Код:

class Parents (
public void showcase () (
System.out.println("I am Parent");
)
)
class Children extends Parents (
@Override
public void showcase () (
System.out.println("I am Children");
)
)
public class RunTimePolymorphism (
public static void main(String args()) (
Parents superObject = new Parents();
superObject.showcase(); //method of super class or parent class is called
Parents subObject = new Children(); // upcasting
subObject.showcase();//method of sub class or child class is called by Parent reference, this is called "Run time Polymorphism"
Children subObject2 = new Children();
subObject2.showcase(); //method of sub class or child class is called
)
)

Вихід:

Приклад №2

Візьмемо приклад поліморфізму тривалості часу у випадку багаторівневого успадкування. У цьому прикладі ми взяли до уваги два рівні спадкування. У цьому прикладі ми покажемо, як метод sip () відображає різні повідомлення залежно від того, з яким типом об'єкта він пов'язаний. Коли він асоціюється з типом "Людина", він відображає повідомлення з батьківського класу. Тоді як, коли він асоціюється з типом "Людина", він показує повідомлення свого дочірнього класу. Знову на другому рівні спадкування, коли він асоціюється з типом "Дитина", він показує повідомлення свого дочірнього класу свого батька, що є класом "Людина".

Код:

class Human(
void sip() (
System.out.println("Human is sipping");
)
)
class Man extends Human(
void sip()(
System.out.println("Man is sipping soup");
)
)
class Baby extends Man(
void sip()(
System.out.println("Baby is sipping milk");
)
)
public class RunTimePolymorphism (
public static void main(String args())(
Human superObject=new Human();
Human subObject=new Man(); // // upcasting : first level of heritance
Human babyObject=new Baby(); // // upcasting : second level of heritance
superObject.sip();
subObject.sip(); //run time polymorphism happening in first level of heritance
babyObject.sip(); //run time polymorphism happening in second level of heritance
)
)

Вихід:

Приклад №3

Візьмемо ще один приклад поліморфізму запущеного часу у випадку багаторівневого успадкування. У цьому прикладі ми враховуємо три рівні спадкування. У цьому прикладі ми покажемо, як особливість методу () відображає різні функції залежно від того, з яким типом об'єкта він пов'язаний. Коли він пов'язаний з типом "операційна система", він відображає повідомлення з батьківського класу. Тоді як він асоціюється з типом "DOS", він показує повідомлення свого дочірнього класу. Знову ж таки, на другому рівні спадкування, коли він асоціюється з типом "Windows", він показує повідомлення свого дочірнього класу свого батьківського класу, який є класом "DOS". Знову на третьому рівні спадкування, коли він асоціюється з типом "WindowsMobile", він відображає повідомлення з його дочірнього класу свого батьківського класу, що є класом "Windows".

Код:

class OperatingSytem(
void feature() (
System.out.println("This is Operating Sytem");
)
)
class DOS extends OperatingSytem(
void feature()(
System.out.println("This is DOS");
)
)
class Windows extends DOS(
void feature()(
System.out.println("This is Windows");
)
)
class WindowsMobile extends Windows(
void feature()(
System.out.println("This is Windows Mobile");
)
)
public class RunTimePolymorphism (
public static void main(String args())(
OperatingSytem superObject=new OperatingSytem();
OperatingSytem subObject=new DOS(); // child object type : first level of heritance
OperatingSytem sub2Object=new Windows(); // child object type : second level of heritance
OperatingSytem sub3Object=new WindowsMobile(); // child object type : third level of heritance
superObject.feature();
subObject.feature(); //run time polymorphism happening in first level of heritance
sub2Object.feature(); //run time polymorphism happening in second level of heritance
sub3Object.feature(); //run time polymorphism happening in third level of heritance
)
)

Вихід:

Висновок

На цьому ми закінчуємо вивчення теми "Поліморфізм під час виконання Java". Напишіть собі коди, згадані у вищенаведених прикладах, у компіляторі java та перевірте вихід. Вивчення кодів буде неповним, якщо ви не будете писати код самостійно.

Рекомендовані статті

Це було керівництвом щодо поліморфізму під час виконання на Яві. Тут ми обговорюємо, як працює поліморфізм під час виконання у Java на прикладах. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Статичне ключове слово на Java
  2. Перевагу в Java
  3. Що таке поліморфізм?
  4. Іржа проти Голанга