Увод у преоптерећење и прегласавање на Јави

Погледајмо прво оно што име сугерира на први поглед. "Преоптерећење" значи: стављати додатно оптерећење нечијој оригиналној функцији, зар не? Док „прегласавање“ значи: пружање нове функционалности поред нечије оригиналне функционалности. У овом ћемо чланку детаљно размотрити преоптерећење и прегласавање на Јави. Да, и у Јави се оне имплементирају на исти начин програмски. Погледајмо то једно по једно.

Преоптерећење у Јави

Кад јава класа има више метода са истим именом, али са различитим аргументима, то називамо методом Оверлоадинг. Задржавањем истог имена само повећавамо читљивост програмског кода. На пример, претпоставимо да морамо да извршимо неку операцију сабирања на одређеним бројевима. Рецимо да је назив наше методе „додавање ()“. Овде се додавање може извршити између два броја, три броја или више. Стога, овисно о томе колико ће бројева укључивати операцију додавања, можемо промијенити аргументе (или параметре) функције. Али уместо овога, ако бисте написали различите методе за различит број аргумената, биће тешко препознати јер би име било другачије. Стога, преоптерећењем постижемо бољу читљивост нашег кода. Дакле, питање је како ћемо постићи преоптерећење?

Погледајмо оне по један са примерима кодова.

Метода бр. 1 - Променом броја параметара

Дакле, овде ћемо урадити додавање на неким бројевима. За то нека креирамо класу која се зове „АддитионОператион“. Унутар те класе, имамо две методе назване „додавање ()“. У једној од тих метода извршићемо сабирање два броја. У другом ћемо извршити сабирање три броја. То ћемо постићи једноставном променом броја параметара у тим методама, али име ћемо задржати исто. На овај начин овде смо преоптеретили методу „додавање ()“.

Шифра:

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 - Променом врсте података

Дакле, овде ћемо урадити додавање на различитим типовима, на пример између целог броја и између двоструког типа. За то нека креирамо класу која се зове „АддитионОператион“. Унутар те класе, имамо две методе назване „додавање ()“. У једној од тих метода извршићемо сабирање два цела броја. У другом ћемо извести додавање два двострука. То ћемо постићи једноставном променом врсте параметара у тим методама, али име ћемо задржати исто. На овај начин овде смо преоптеретили методу „додавање ()“.

Шифра:

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.
)
)

Излаз:

Бодови за напомену због преоптерећења

  • Преоптерећење Јава-ом у основи је „полимер-време сакупљања, Метод преоптерећење у Ц # орфизму“. Полиморфизам у компилацијском времену у јави такође се назива „статичка метода слања“ или „рано везивање“. Па шта мислим под тим жаргоном?
  • Полиморфизам, као што име сугерира, у основи је способност да се прими у више облика (поли: мани, морпх: форм). Дакле, овде се повезивање или везање преоптерећене функције и објекта врши време компајлирања. Отуда се назива полиморфизам у компилацијском времену.
  • У основи, везање функције за објект се врши пре времена покретања (тј. Током компајлирања), па је и тако именовано „рано везивање“.
  • Статичка диспеч је врста полиморфизма или методе отпреме која говори како ће јава одабрати која ће се функција методе користити у времену компилације. (Мислим, да ли ће извести додавање два броја или три броја у нашем примеру кодирања). Тако је име познато и као статичка метода диспеч.

Превладавање у Јави

  • Када јава подкласа или подређена класа има методу истог назива и садржи исте параметре или аргументе и сличан тип повратка као метода која је присутна у њеној надкласи или родитељској класи, тада можемо назвати методу подређене класе као надјачана метода методе матичне класе.
  • На пример, претпоставимо да морамо да обавимо неке операције приказа на основу врсте класе. Мислим, ако назовем метод родитељске класе, она ће приказати поруку која је дефинисана у родитељској класи. Али, када назовемо методу дечије класе, она ће надјачати приказну поруку родитељске класе и приказаће поруку екрана која је дефинисана унутар методе дечије класе. Стога, у зависности од тога који екран морамо да прикажемо, можемо назвати сродну класу (родитеља или детета). Овде не мењамо име методе, аргумент и тип повратка. Ми само мењамо функционалност методе у дечјој класи. Али уместо овога, ако не извршимо прегласавање, тј. Не дамо специфичну примену дечије методе, тада ће током позивања метода приказати исту поруку као у родитељској класи.
  • Док пишемо код, користићемо напомене @ Оверриде пре него што метод претерамо. Биљешка @Оверриде каже преводиоцу да метода треба да надјача метод који је деклариран у суперкласи. Иако то није обавезно, то помаже у спречавању грешака. Ако метода која је означена са @Оверриде не успе пребрисати методу, преводилац генерише грешку.

Правила за прегласавање Јава метода

  1. Метода мора имати исто име као у родитељској класи
  2. Метода мора имати исти параметар као у родитељској класи.
  3. Мора постојати однос ИС-А (наслеђивање).

Шифра:

//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. Статичке методе се не могу прекорачити

Бодови који треба напоменути због прегласавања

  • Преоптерећење јавом у основи је „полиморфизам у току времена“. Полиморфизам времена извођења у јави такође се назива и „динамичка метода слања“ или „Касно везивање“. Па шта се подразумева под тим жаргоном?
  • Полиморфизам, као што име сугерира, у основи је способност да се прими у више облика (поли: мани, морпх: форм). Дакле, овде се позива на преоптерећену функцију са објектом извршава се време извођења. Отуда се назива полиморфизам у току времена.
  • У основи, везање функције за објект се врши касно, што је после компилације (тј. Током извођења); отуда је и назван „касно везивање“.
  • Динамичка диспеч је врста полиморфизма или начина отпреме која говори како ће јава одабрати која ће се функционалност методе користити током извођења. Дакле, назив је такође познат као Динамичка метода Диспатцх.

Закључак

Овим се закључује наше учење о теми „Преоптерећење и прегласавање у Јави“. Напишите кодове поменуте у горњим примерима у јава преводилац и проверите излаз. Учење кодова биће непотпуно ако се сами не бавите тиме што ће побољшати ваше вештине кодирања. Срецно кодирање !!

Препоручени чланци

Ово је водич за преоптерећење и прегласавање на Јави. Овде смо расправљали о методама преоптерећења заједно са правилима и ограничењима прегласавања у Јави. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -

  1. Прегласавање у ЈаваСцрипт-у
  2. Превладавање у ООП-има
  3. Шта су генерички подаци на Јави?
  4. Превладавање у ПХП-у
  5. Питхон Оверлоадинг
  6. Наслеђивање у ПХП-у
  7. Комплетан водич за наследство Питхона
  8. Преоптерећење и прегласавање у Ц #
  9. Врсте и грешке у руковању у ЈаваСцрипт-у
  10. Примери и како генеричари раде у Ц #
  11. Функција и правила прегласавања у Питхон-у

Категорија: