„Java“ polimorfizmas: kaip perkrauti ar nepaisyti metodų

„Java“ polimorfizmas: kaip perkrauti ar nepaisyti metodų

Metodo perkrovimas ir nepaisymas yra du būdai, kuriais „Java“ demonstruoja polimorfizmą. Polimorfizmas kilęs iš dviejų graikų kalbos žodžių junginio: „poli“ reiškia daug ir „morfas“ reiškia formą. Todėl polimorfizmas leidžia metodams įgyti daugybę formų.





Vadovaukitės šiuo vadovu, kad sužinotumėte, kaip perkrauti ar nepaisyti „Java“ metodų.





Kas yra metodo perkrovimas?

„Metodo perkrovimas“ reiškia skirtingų metodų apibrėžimą to paties pavadinimo klasėje. Metodai turi turėti skirtingus parašus. Metodo parašas yra metodo pavadinimo ir parametrų sąrašo derinys. Tai neapima grąžinimo tipo.





Kompiliatorius žino, kokį metodą naudoti, patikrindamas tipą, parametrų skaičių ir jų išdėstymo tvarką.

Susijęs: Paveldėjimo tyrinėjimas „Java“ programavimo kalba



Metodo perkrovimas rodo kompiliavimo laiko polimorfizmą. Kompiliavimo laiko polimorfizmas reiškia, kad „Java“ kompiliatorius vykdymo metu susieja objektą su jo funkcionalumu. Kompiliatorius tikrina metodo parašus, kad tai pasiektų.

Šis polimorfizmo tipas taip pat žinomas kaip statinis arba ankstyvas surišimas.





Žiūrėkite žemiau pateiktą metodo perkrovimo pavyzdį:

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));
}
}

Išėjimas:





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

Aukščiau pateiktas kodas parodo, kaip galite gauti įvairių tipų kubą ( tarpt , dvigubas , plūdė ) naudojant tą patį metodą.

Paprastai metodų perkrovimas naudojamas apibrėžti panašius metodus su skirtingų tipų parametrais.

Kas yra metodo nepaisymas?

Tai reiškia skirtingą metodo įgyvendinimą poklasyje. Metodas turi būti jau apibrėžtas tėvų klasėje.

Svarbiausias metodas (t. Y. Poklasio metodas) turi turėti tokį patį metodo parašą kaip ir aukščiausios klasės metodas. Pirminio metodo grąžinimo tipas gali būti toks pat arba potipis, kaip aukščiausios klasės.

Nepaisymas paprastai naudojamas tam, kad į poklasį būtų įtrauktas konkretus objekto elgesio įgyvendinimas.

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!');
}
}

Išėjimas:

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!

Aukščiau pateiktas pavyzdys parodo, kaip metodas pranešimas () poklasiuose yra nepaisoma Taupymas ir Fiksuoto dydžio įnašas . Bus rodomi skirtingi pranešimai banko sąskaitų turėtojams, turintiems taupomąją sąskaitą, ir tiems, kurie turi fiksuoto indėlio sąskaitą.

Susijęs: Ką reikia žinoti apie eilučių naudojimą „Java“

Taip pat verta paminėti, kad nepaisomas metodas parodo vykdymo laiko polimorfizmą arba dinaminį metodo išsiuntimą. Tai reiškia, kad vadinamasis metodas išsprendžiamas vykdymo metu, o ne kompiliavimo metu.

Norėdami išvengti metodo nepaisymo, naudokite raktinį žodį galutinis .

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

Kai poklasis bando jį nepaisyti, įvyks kompiliavimo klaida.

Idealiu atveju visi metodai, vadinami konstruktoriaus viduje, turėtų būti galutinis . Taip siekiama išvengti nenumatytų pakeitimų, kuriuos gali sukelti poklasiai.

Kartais gali reikėti pasiekti nepaisomą metodą per nepaisomą metodą. Galite naudoti raktinį žodį super po to eina taškų operatorius ( . ) ir metodo pavadinimą tokiu atveju.

Apsvarstykite superklasę Gyvūnas .

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

Žemiau yra poklasis, vadinamas Žuvis , tai nepaiso judėti () :

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šėjimas:

kodėl hbo max nuolat užšąla?
I can swim.
I can move.

Nepaisydami metodo, taip pat turite atsižvelgti į naudojamą prieigos keitiklį. Paklasės modifikatorius turėtų būti tokio pat matomumo lygio arba didesnis nei bazinės klasės. Pavyzdžiui, jei bazinės klasės metodas yra apibrėžtas kaip apsaugotas , tada pagrindinis metodas gali būti bet kuris apsaugotas arba viešas .

Paprastas kodas su polimorfizmu

Metodo nepaisymas ir perkrovimas yra svarbūs supaprastinant kodą, o paprastas kodas yra gera praktika.

Kodėl? Įsivaizduokite sudėtingą kodų bazę, kurioje yra daugiau įžvalgų ir trūkumų nei Grand Central Station. Dabar įsivaizduokite, kad pražūtinga klaida prieš jūsų akis pradeda naikinti jūsų sunkų darbą. Jūs turite atskirti infekcijos šaltinį ir tai padaryti greitai.

Sėkmės, nesupaprastinote savo kodo ... Dabar jūs ruošiatės gauti tikrą kriptografijos pamoką. Naudoti efektyvias duomenų struktūras ir daryti viską, ką galite, kad sutrumpintumėte kodą (pvz., Nepamiršti DRY), yra geriausia gynyba nuo tokios situacijos.

Kitas jūsų „Java“ mokymosi sąraše turėtų būti darbas su masyvais. Jie yra svarbios duomenų struktūros, naudojamos duomenų taškų partijoms saugoti.

Dalintis Dalintis „Tweet“ Paštu Kaip sukurti ir atlikti operacijas masyvuose „Java“

Mokotės „Java“? Leiskite masyvams lengvai tvarkyti jūsų duomenis.

Skaityti toliau
Susijusios temos
  • Programavimas
  • „Java“
  • Kodavimo pamokos
Apie autorių Jerome'as Davidsonas(Paskelbti 22 straipsniai)

Džeromas yra „MakeUseOf“ personalo rašytojas. Jis apima straipsnius apie programavimą ir „Linux“. Jis taip pat yra kriptovaliutų entuziastas ir visada stebi kriptografijos pramonę.

Daugiau iš Jerome Davidson

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia