Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Полиморфизм в ООП Java на примере:что такое динамический

Что такое полиморфизм в Java?

Полиморфизм в Java возникает, когда есть один или несколько классов или объектов, связанных друг с другом путем наследования. Это способность объекта принимать различные формы. Наследование позволяет пользователям наследовать атрибуты и методы, а полиморфизм использует эти методы для выполнения различных задач. Итак, цель — общение, но подход другой.

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

В этом руководстве по Java вы узнаете-




Нажмите здесь, если видео недоступно

Полиморфизм Java в ООП с примером

У нас есть один родительский класс «Учетная запись» с функцией депозита и вывода средств. В аккаунте есть 2 дочерних класса

Операция депозита и снятия одинакова для сберегательного и расчетного счетов. Таким образом, унаследованные методы от класса Account будут работать.

<центр>

<рисунок>

Пример полиморфизма Java

Изменение требований к программному обеспечению

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

Для справки, овердрафт — это средство, с помощью которого вы можете снять сумму, превышающую доступный остаток на вашем счете.

Таким образом, метод отзыва для привилегированных должен быть реализован заново. Но вы не меняете проверенный фрагмент кода в Сберегательно-чековом счете. В этом преимущество ООП

Шаг 1) Таким образом, когда вызывается метод «снятия» для сохранения учетной записи, выполняется метод из класса родительской учетной записи

Шаг 2) Но когда вызывается метод «Снятие» для привилегированной учетной записи (овердрафт), выполняется метод снятия, определенный в привилегированном классе. Это полиморфизм в ООП.

Переопределение метода в Java

Переопределение метода — это переопределение метода суперкласса в подклассе.

Правила переопределения метода

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

Пример

class Doctor{
  public void treatPatient(){
  // treatPatient method
  
}
class Surgeon extends Doctor{
  public void treatPatient(){
  // treatPatient method
  }
}
Class run{
  public static void main (String args[]){
    Doctor doctorObj = new Doctor()
	// treatPatient method in class Doctor will be executed
    doctorObj.treatPatient();
   
    Surgeon surgeonObj = new Surgeon();
    // treatPatient  method in class Surgeon  will be executed
    surgeonObj.treatPatient();
  }
}

Разница между перегрузкой и переопределением

Перегрузка метода

Переопределение метода
Перегрузка метода происходит в одном классе, где несколько методов имеют одно и то же имя, но разные сигнатуры. Переопределение метода — это когда один из методов суперкласса переопределяется в подклассе. В этом случае сигнатура метода остается прежней.
Пример:

void sum (int a , int b);
void sum (int a , int b, int c);
void sum (float a, double b);
Пример:

class X{
  public int sum(){
     // some code
  }
}

class Y extends X{
  public int sum(){
    //overridden method
   //signature is same
 }
}

Что такое динамический полиморфизм?

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

Пример динамического полиморфизма:

Ссылочная переменная суперкласса может ссылаться на объект подкласса

 Doctor obj = new Surgeon();

Рассмотрим утверждение

obj.treatPatient();

Здесь ссылочная переменная «obj» относится к родительскому классу, но объект, на который она указывает, относится к дочернему классу (как показано на приведенной ниже диаграмме примера полиморфизма).

obj.treatPatient() выполнит методtreatPatient() подкласса — Surgeon

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

Например, несмотря на то, что obj является ссылкой на Doctor, он вызывает метод Surgeon, так как указывает на объект Surgeon

Это определяется во время выполнения и поэтому называется динамическим . или полиморфизм во время выполнения

Разница между статическим и динамическим полиморфизмом

Статический полиморфизм в Java — это тип полиморфизма, который собирает информацию для вызова метода во время компиляции, тогда как динамический полиморфизм — это тип полиморфизма, который собирает информацию для вызова метода во время выполнения.


Статический полиморфизм

Динамический полиморфизм
Это относится к перегрузке методов. Это относится к переопределению методов.
Ошибки, если таковые имеются, устраняются во время компиляции. Так как код не выполняется во время компиляции, отсюда и название static.

Пример:

void sum (int a , int b);
void sum (float a, double b);
int sum (int a, int b); //compiler gives error.

В случае, если ссылочная переменная вызывает переопределенный метод, вызываемый метод определяется объектом, на который указывает ваша ссылочная переменная. Это можно определить только во время выполнения, когда код находится в процессе выполнения, отсюда и название «динамический».

Пример:

//reference of parent pointing to child object
 Doctor obj = new Surgeon();
// method of child called
obj.treatPatient();

Супер ключевое слово в Java

Что, если методtreatPatient в классе Surgeon хочет выполнить функциональность, определенную в классе Doctor, а затем выполнить свою собственную специфическую функциональность?

В этом случае ключевое слово super может использоваться для доступа к методам родительского класса из дочернего класса.

МетодtreatPatient в классе Surgeon можно записать так:

treatPatient(){
   super.treatPatient();
     //add code specific to Surgeon
}

Ключевое слово super может использоваться для доступа к любому члену данных или методам суперкласса в подклассе.

Далее мы узнаем о ключевом слове Super, наследовании и полиморфизме в Java на примерах программ.

Пример:изучение наследования, полиморфизма и ключевого слова super

Шаг 1) Скопируйте следующий код в редактор

public class Test{
     public static void main(String args[]){
        X x= new X();
       Y y = new  Y();
       y.m2();
      //x.m1();
      //y.m1();
     //x = y;// parent pointing to object of child
     //x.m1() ;
     //y.a=10;
   }

}
class X{
   private int a;
   int b;
      public void m1(){
       System.out.println("This is method m1 of class X");
     }
}

class Y extends X{
      int c; // new instance variable of class Y
         public void m1(){
            // overriden method
            System.out.println("This is method m1 of class Y");
        }
       public void m2(){
           super.m1();
           System.out.println("This is method m2 of class Y");
      }
}

Шаг 2) Сохраните, скомпилируйте и запустите код. Наблюдайте за выводом.

Шаг 3) Раскомментируйте строки #6-9. Сохраните, скомпилируйте и запустите код. Наблюдайте за выводом.

Шаг 4) Раскомментируйте строку # 10 . Сохраните и скомпилируйте код.

Шаг 5) Ошибка =? Это связано с тем, что подкласс не может получить доступ к закрытым членам суперкласса.

Обзор

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

java

  1. Java-полиморфизм
  2. Учебное пособие по абстрактному классу C # с примером:что такое абстракция?
  3. Что такое интерфейс в C# с примером
  4. Метод String Length() в Java:как найти на примере
  5. Метод Java String charAt() с примером
  6. Строка Java содержит () Метод | Проверить подстроку с примером
  7. Метод Java String endWith() с примером
  8. Статическая переменная в Java:что такое статический блок и метод [пример]
  9. Интерфейс против абстрактного класса в Java:в чем разница?
  10. Java BufferedReader:как читать файл в Java с примером