Полиморфизам у Јави: Како преоптеретити или надјачати методе

Полиморфизам у Јави: Како преоптеретити или надјачати методе

Преоптерећење и надјачавање метода два су начина на која Јава демонстрира полиморфизам. Полиморфизам долази од комбинације две грчке речи: „поли“ што значи много и „морпх“ што значи облик. Стога полиморфизам омогућава методама да поприме многе облике.





Пратите овај водич да бисте сазнали како преоптеретити или заменити методе у Јави.





Шта је преоптерећење метода?

'Преоптерећење метода' односи се на дефинисање различитих метода у класи са истим именом. Методе морају имати различите потписе. Потпис методе је комбинација имена методе и листе параметара. Не укључује врсту повратка.





Преводилац зна који метод треба да користи проверавајући тип, број параметара и редослед по коме су постављени.

Повезан: Истраживање наслеђивања у програмском језику Јава



Преоптерећење метода показује полиморфизам времена компајлирања. Полиморфизам у време компајлирања значи да Јава компајлер веже објекат за његову функционалност током извођења. Преводилац проверава потписе метода да би то постигао.

Ова врста полиморфизма позната је и као статичко или рано везивање.





Погледајте пример преоптерећења метода испод:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Излаз:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

Горњи код приказује како можете добити коцку различитих врста ( инт , дупло , пловак ) користећи исту методу.

Генерално, преоптерећење метода се користи за дефинисање сличних метода са различитим типовима параметара.

Шта је надјачавање методе?

Ово се односи на другачију имплементацију методе у подкласи. Метода мора бити већ дефинисана у родитељској класи.

Метода надјачавања (тј. Она у подкласи) мора имати исти потпис методе као она у надкласи. Врста повратне методе надјачавајућег метода може бити иста или подтип оне у надкласи.

Надјачавање се опћенито користи за укључивање посебне имплементације понашања објекта у подкласу.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Излаз:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

Горњи пример показује како се метода порука () се замењује у поткласама Штедња и Фиксни депозит . Различите поруке ће бити приказане за власнике банковних рачуна са штедним рачуном и оне са рачуном са фиксним депозитом.

Повезан: Шта треба да знате о коришћењу стрингова у Јави

Такође је вредно напоменути да надјачавање методе показује полиморфизам током извођења или слање динамичке методе. То значи да се метода која се позива решава у току извођења, а не при компилацији.

Да бисте избегли заобилажење метода, користите кључну реч коначни .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Када подкласа покуша да је замени, доћи ће до грешке при компајлацији.

У идеалном случају, све методе позване унутар конструктора би требале бити коначни . Тиме се избегавају све ненамерне промене до којих може доћи због поткласа.

Понекад ћете можда морати да приступите надјачаној методи у оквиру надјачавајуће методе. Можете користити кључну реч супер након чега следи оператор тачке ( . ) и назив методе у таквом случају.

Размотрите суперкласу Анимал .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Испод је подкласа, тзв Фисх , то поништава потез() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Излаз:

претворите рукопис у бесплатни софтвер за текст
I can swim.
I can move.

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

Једноставан код са полиморфизмом

Надјачавање метода и преоптерећење су важни за поједностављење кода, а једноставан код је добра пракса.

Зашто? Замислите сложену базу кодова са више детаља од Гранд Централ Статион -а. Сада замислите да разорна буба почиње уништавати ваш напоран рад пред вашим очима. Морате изоловати извор инфекције и то морате учинити брзо.

Сретно, нисте поједноставили свој код ... Сада ћете добити праву лекцију из криптографије. Употреба ефикасних структура података и све што можете да скратите код (као што је држање ДРИ на уму) ваша је најбоља одбрана од овакве ситуације.

Следеће на вашој листи за учење Јава треба да ради са низовима. То су важне структуре података које се користе за складиштење група тачака података.

Објави Објави Твеет Емаил Како креирати и изводити операције над низовима у Јави

Учење Јаве? Допустите низовима да са лакоћом рукују вашим подацима.

Прочитајте следеће
Повезане теме
  • Програмирање
  • Јава
  • Кодирање Туториали
О аутору Јероме Давидсон(22 објављена чланка)

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

Више од Јеромеа Давидсона

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили