Въведение в Полиморфизъм по време на работа в Java

В тази статия ще научим за Полиморфизма по време на работа в Java. „Поли“ означава „много“, а „морф“ означава „тип“. Така че терминът полиморфизъм обозначава едно и също нещо от различни видове. Тук ще видим как Java архивира полиморфизъм по време на изпълнение, което означава след компилация, но преди пускане на кода.

Синтаксис:

За полиморфизъм по време на работа в Java, трябва да следвате основния синтаксис на java с пояснения. @Override може да се използва тук, за да посочим конкретно кой метод искаме да отменим.

Как работи Полиморфизмът по време на работа в Java?

Полиморфизмът по време на работа работи в Java чрез преодоляване на метода. Преопределянето на метода се случва, когато обектите имат същото име и аргументи на метода и тип като на своя родителски клас, но с различна функционалност. Ако детският клас има този тип метод в него, ние го наричаме преодолян метод.

Защо се нарича Полиморфизъм по време на работа?

когато извикаме отменен метод на детски клас чрез неговия родителски референтен тип (това явление в Java се нарича „ъпдейт“), тогава типът на обекта показва кой метод или функционалност ще бъдат извикани. Вземането на това решение се случва по време на изпълнение от JVM след компилиране на код. Следователно той е наречен полиморфизъм на Run time.

Също така се нарича "Динамичен метод на изпращане". Причината е наречена така, поради факта, че функционалността на метода е динамично решена във време за изпълнение според обекта от JVM

Нарича се още „Късно свързване“, тъй като свързването на метода и обекта, което означава функционалността на метода на обекта, който ще бъде показан, се решава късно, т.е. след компилиране.

Правила и ограничения в Runtim e Polymorphism

По-долу са някои от правилата и ограниченията на полиморфизма по време на изпълнение:

Правила на полиморфизма по време на работа

  • Методите на детски и родителски клас трябва да имат едно и също име.
  • Методите на детски и родителски клас трябва да имат един и същ параметър.
  • Връзката 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 () показва различни съобщения в зависимост от това с кой тип обект е свързан. Когато е свързан с типа „Човек“, той показва съобщения от родителски клас. Като има предвид, че когато е свързан с типа "Man", той показва съобщения от своя детски клас. Отново във второто ниво на наследяване, когато е свързано с типа „Бебе“, то показва съобщения от своя детски клас на своя родител, който е клас „Човек“.

Код:

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. Тук обсъждаме как работи Полиморфизмът в Java с примери. Може да разгледате и следните статии, за да научите повече -

  1. Статична ключова дума в Java
  2. По-важно в Java
  3. Какво е полиморфизъм?
  4. Ръст срещу Голанг