Въведение в претоварването и преодоляването на Java

Нека първо разгледаме какво подсказва името от първия му поглед. „Претоварване“ означава: да натоварите допълнително с нечия оригинална функционалност, нали? Като има предвид, че "Overriding" означава: предоставяне на нова функционалност в допълнение към първоначалната функционалност на никого. В тази статия ще разгледаме подробно претоварването и преодоляването на Java. Да, и в Java те се реализират по същия начин програмно. Нека да разгледаме това едно по едно.

Претоварване в Java

Когато клас java има множество методи с едно и също име, но с различни аргументи, ние го наричаме метод Overloading. Запазвайки името същото, ние просто увеличаваме четливостта на програмния код. Например, да предположим, че трябва да извършим някаква операция за добавяне на някои дадени числа. Нека кажем, че името на нашия метод е „добавяне ()“. Тук може да се направи добавяне между две числа, три числа или повече. Следователно, в зависимост от това колко числа ще включват допълнителна операция, можем да променим аргументите (или параметрите) на функцията. Но вместо това, ако напишете различни методи за различния брой аргументи, ще бъде трудно да разпознаете, тъй като името би било различно. Следователно чрез претоварване постигаме по-добра четимост на нашия код. Така че сега въпросът е как ще постигнем претоварване?

Нека разгледаме тези по един с примерни кодове.

Метод №1 - чрез промяна на броя на параметрите

Така че тук, ние ще направим операция за добавяне на някои числа. За целта нека създадем клас, наречен „AdditionOperation“. Вътре в този клас, нека да имаме два метода, наречени „добавяне ()“. В един от тези методи ще извършим добавяне на две числа. В другия ще извършим добавянето на три числа. Това ще постигнем, като просто променим броя на параметрите в тези методи, но ще запазим името същото. По този начин тук претоварваме метода „добавяне ()“.

Код:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

изход:

Метод №2 - чрез промяна на типа на данните

Така че тук ще направим операция за добавяне на различни типове, например между цяло число и между двоен тип. За целта нека създадем клас, наречен „AdditionOperation“. В този клас нека имаме два метода, наречени „добавяне ()“. В един от тези методи ще извършим добавянето на две цели числа. В другия ще извършим добавянето на две двойни. Това ще постигнем, като просто променим типа параметри в тези методи, но ще запазим името същото. По този начин тук претоварваме метода „добавяне ()“.

Код:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

изход:

Точки, които трябва да бъдат отбелязани за претоварване

  • Претоварването в Java е в основата на "polym-time polymMethod Overloading in C # orphism". Полиморфизмът в компилиран период в java се нарича също „статичен метод на изпращане“ или „ранно свързване“. И така, какво искам да кажа с този жаргон?
  • Полиморфизмът, както подсказва и името, е основно способност да приема много форми (поли: много, морф: форма). И така, тук свързването или свързването на претоварената функция и обекта се прави време за компилиране. Следователно той се нарича полиморфизъм във време на компилация.
  • По същество тук, свързването на функцията към обекта се извършва рано, преди да се изпълни времето (т.е. по време на компилиране), поради което е и наречено „Ранно свързване“.
  • Статичното изпращане е вид полиморфизъм или метод на изпращане, който казва как java ще избере коя функционалност на метода ще бъде използвана във времето за компилиране. (Искам да кажа, дали ще извърши добавяне на две числа или три числа в нашия пример за кодиране). Така че името е известно и като статичен метод Dispatch.

По-важно в Java

  • Когато подклас java или докласен клас има метод, който е със същото име и съдържа същите параметри или аргументи и подобен тип връщане като метод, който присъства в неговия клас надклас или родител, тогава можем да наречем метода на дъщерния клас като отменен метод на метода на неговия родителски клас.
  • Например, да предположим, че трябва да извършим някаква операция по показване според типа му клас. Искам да кажа, че ако извикам метода на родителски клас, той ще покаже съобщение, което е дефинирано в родителски клас. Но когато извикаме метода на детския клас, той ще отмени дисплейното съобщение на неговия родителски клас и ще покаже съобщението на дисплея, което е дефинирано вътре в метода на детския клас. Следователно, в зависимост от това кой дисплей трябва да покажем, можем да се обадим на съответния клас (родител или дете). Тук не променяме името на метода, аргумента и типа връщане. Просто променяме функционалността на метода в детски клас. Но вместо това, ако не правим преодоляване, т.е. не даваме конкретната имплементация на дъщерния метод, тогава докато извикваме метода, той ще покаже същото съобщение като в родителски клас.
  • Докато пишем код, ще използваме @ Override пояснение преди метода да бъде отменен. @Override анотация казва на компилатора, че методът трябва да отмени метод, деклариран в суперклас. Въпреки че не е задължително да се използва това, това помага да се предотвратят грешки. Ако метод, който е анотиран с @Override, не успее да отмени метод, компилаторът генерира грешка.

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

  1. Методът трябва да има същото име като в родителския клас
  2. Методът трябва да има същия параметър като в родителския клас.
  3. Трябва да има IS-A връзка (наследяване).

Код:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

изход:

Ограничения в метода за отмяна

  1. Частните методи на родителския клас не могат да бъдат отменени.
  2. Окончателните методи не могат да бъдат отменени
  3. Статичните методи не могат да бъдат отменени

Точки, които трябва да бъдат отбелязани за преодоляване

  • Претоварването в Java е в основата на „полиморфизъм по време на работа“. Полиморфизмът на времето на работа в Java се нарича още „Динамичен метод на изпращане“ или „Късно свързване“. И така, какво се разбира под този жаргон?
  • Полиморфизмът, както подсказва и името, е основно способност да приема много форми (поли: много, морф: форма). И така, тук извикване на претоварена функция с обекта се извършва времето на изпълнение. Оттук се нарича полиморфизъм на времето за изпълнение.
  • По принцип тук свързването на функцията към обекта се извършва късно, което е след компилация (т.е. по време на изпълнение); следователно е наречен и като „късно свързване“.
  • Динамичното изпращане е вид полиморфизъм или метод на изпращане, който казва как java ще избере коя функционалност на метода ще се използва във времето на изпълнение. Така че името е известно още като Динамичен метод Dispatch.

заключение

С това завършваме нашето изучаване на темата „Претоварване и преодоляване на Java“. Напишете кодовете, споменати в горните примери, в java компилатора и проверете изхода. Научаването на кодове ще бъде непълно, ако не се справяте сами, тъй като това ще подобри вашите умения за кодиране. Честито кодиране !!

Препоръчителни статии

Това е ръководство за претоварването и преодоляването на Java. Тук обсъждаме методите в Overloading, заедно с правилата и ограниченията на Overriding в Java. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Отмяна на JavaScript
  2. Повишаване в OOPs
  3. Какво представляват генеричните файлове в Java?
  4. Преодоляване на PHP
  5. Python Overloading
  6. Наследяване в PHP
  7. Пълно ръководство за наследяване в Python
  8. Претоварване и отмяна в C #
  9. Видове и обработка на грешки в JavaScript
  10. Примери и как генериците работят в C #
  11. Функция и правила за преодоляване в Python