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

JAVA: ООП (полиморфизм)

Q1: УПС: Полиморфизм? Вопрос 2: Полиморфизм во время компиляции? Q3: Полиморфизм во время выполнения? Q4: Факты о Pol… Помеченный java, ооп.

Q1: УПС: Полиморфизм? Вопрос 2: Полиморфизм во время компиляции? Q3: Полиморфизм во время выполнения? Q4: Факты о полиморфизме? Q5: Преимущества? Q6: Недостатки? Q7: Перегрузка метода? Q8: Перегрузка метода?

1. Полиморфизм:-

1.1 возможность обработки сообщения или данных в более чем одной форме 1.2 Оно происходит от двух греческих слов, то есть поли и морфы. “поли” означает “много”, а “морфы” означают формы. Отныне полиморфизм подразумевает множество форм. 1.3 например, для функции чтения защищенных классов – class_category() может принимать различные типы аргументов, такие как – class_category(первый класс), class_category(второй класс), class_category(различие) и т.д.

2. Полиморфизм во время компиляции:-

2.1 выполняется методом перегрузки 2.2, также называемым Статической привязкой/Раннее связывание

3. Полиморфизм во время выполнения:-

3.1 выполняется переопределением метода 3.2 также называется Динамическая привязка/Отправка динамического метода/Поздняя привязка , где

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

3.3 Здесь переопределенный метод вызывается через ссылочную переменную родительского класса 3.4 Полиморфизм во время выполнения не может быть достигнут элементами данных

4. Факты о полиморфизме:-

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

5. Преимущества:-

5.1 помогает программисту повторно использовать код, а также классы, которые когда-то были написаны для тестирования и реализации 5.2 одно имя переменной может содержать значения нескольких типов данных, таких как int, float и т.д. 5.3 улучшена читабельность программы

6. Недостатки:-

6.1 разработчикам может быть трудно реализовать полиморфизм в кодах 6.2 может повлиять на производительность

если машине нужно решить, какой метод или переменную вызывать. и поскольку эти решения принимаются во время выполнения.

6.3 снижает читабельность программы.

7. Перегрузка способа:-

7.1 одно и то же название метода и разные параметры 7.2 он выполняется в классе 7.3 его главное преимущество повышается читабельность

когда мы должны выполнить только одну операцию, имеющую одно и то же название методов.

способы перегрузки метода: вариант 1: изменение количества аргументов вариант 2: изменение типа данных вариант 3: изменение как количества аргументов, так и типа данных

вариант 1: изменение количества аргументов:- -предположим, вам нужно выполнить операцию умножения заданного числа, но может быть n аргументов, тогда, если вы создадите такой метод, как mult1(int, int) для двух параметров и mult2(int, int, int) для трех параметров, программисту может быть трудно понять поведение блока, т.е. метода, из-за другого имени. В таких ситуациях можно использовать вариант 1. – Ссылка на Github для кодирования

class MethodOverloading
{
    static int mult (int a,int b)
    {
        return a*b;
    }
    static int mult(int a,int b,int c)
    {
        return a*b*c;
    }
}
class MethodOverloadingDifferentNumberOfArguments
{
    public static void main(String[] args)
    {
        System.out.println(MethodOverloading.mult(13,13));
        System.out.println(MethodOverloading.mult(9,9,9));
    }
}

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

вариант 2: изменение типа данных:- -предположим, вам нужно выполнить операцию умножения заданного числа, где заданные числа могут быть любых типов данных. Затем мы можем создавать такие методы, как mult(int, int), mult(float, float) и так далее. – Ссылка на Github для кодирования

class MethodOverloading
{
    static int mult (int a,int b)
    {
        return a*b;
    }
    static double mult(double a,double b,double c)
    {
        return a*b*c;
    }
}
class MethodOverloadingChangingDataType
{
    public static void main(String[] args)
    {
        System.out.println(MethodOverloading);
        System.out.println(MethodOverloading);
    }
}
/*15
35.721*/

вариант 3: изменение как количества аргументов, так и типа данных:- -иногда нам может потребоваться использовать метод, который имеет как разное количество аргументов, так и типы данных. Эти методы вызываются или вызываются со значением одного и того же типа данных и количеством используемых параметров. – Ссылка на Github для кодирования

class MethodOverloading
{
    static int one (int a)
    {
        return a*a;
    }//return square
    static int two(int a,int b)
    {
        return a*b;
    }//return multiplication
    static int three(int a,int b,int c)
    {
        return a+b+c;
    }//return addition
}
class MethodOverloadingBoth
{
    public static void main(String[] args)
    {
        System.out.println(MethodOverloading.one(5));
        System.out.println(MethodOverloading.two(2,3));
        System.out.println(MethodOverloading.three(2,3,4));
    }
}
/*25
6
9*/

8. Переопределение метода:-

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

a. имя метода должно быть таким же, как в родительском классе b. параметры должны быть такими же, как в родительском классе c. должно быть наследование, т.е. IS-A отношения

Ссылка на Github для кода

class MethodOverridingParent
{
    int a=10;
    public void run()
    {
        System.out.println("MethodOverridingParent class's method");
    }
}
class MethodOverridingChild1 extends MethodOverridingParent
{
    int a=9;
    public void run()
    {
        System.out.println("MethodOverridingChild1 class's method "+a);
    }
}
class MethodOverridingChild2 extends MethodOverridingParent
{
    public void run()
    {
        System.out.println("MethodOverridingChild2 class's method "+a );
    }
}
class MethodOverriding
{
    public static void main(String[] args)
    {
        MethodOverridingParent m1=new MethodOverridingChild1();
        m1.run();
        MethodOverridingParent m2=new MethodOverridingChild2();
        m2.run();
    }
}
/*MethodOverridingChild1 class's method 9
MethodOverridingChild2 class's method 10*/

Здесь дочерние классы будут переопределять поведение по умолчанию, предоставляемое суперклассом, и некоторые его собственные особенности поведения. Как вы можете видеть, метод overridingchild1 сначала присваивает приоритет своей собственной переменной a для выполнения операции. и поскольку метод, переопределяющий дочерний 2, не имеет собственной переменной a, он обращается к значениям своего родительского класса.

Пожалуйста, прокомментируйте, если у вас есть какие-либо отзывы или предложения

Оригинал: “https://dev.to/supriya2371997/java-oop-polymorphism-4jc0”