Polimorfisms Java: kā pārslogot vai ignorēt metodes

Polimorfisms Java: kā pārslogot vai ignorēt metodes

Metodes pārslodze un ignorēšana ir divi veidi, kā Java demonstrē polimorfismu. Polimorfisms nāk no divu grieķu vārdu kombinācijas: “poli” nozīmē daudzus un “morfs” nozīmē formu. Tāpēc polimorfisms ļauj metodēm iegūt dažādas formas.





Izpildiet šo rokasgrāmatu, lai uzzinātu, kā pārslogot vai ignorēt Java metodes.





Kas ir metodes pārslodze?

“Metodes pārslodze” attiecas uz dažādu metožu definēšanu klasē ar tādu pašu nosaukumu. Metodēm jābūt ar dažādiem parakstiem. Metodes paraksts ir metodes nosaukuma un parametru saraksta kombinācija. Tas neietver atgriešanas veidu.





Sastādītājs zina, kuru metodi izmantot, pārbaudot parametru veidu, skaitu un to ievietošanas secību.

Saistīts: Mantojuma izpēte Java programmēšanas valodā



Metodes pārslodze parāda kompilācijas laika polimorfismu. Kompilācijas laika polimorfisms nozīmē, ka Java kompilators izpildes laikā saista objektu ar tā funkcionalitāti. Lai to panāktu, kompilators pārbauda metodes parakstus.

Šāda veida polimorfismu sauc arī par statisku vai agrīnu saistīšanos.





Skatiet piemēru par pārslodzes metodi zemāk:

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

Izeja:





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

Iepriekš redzamais kods parāda, kā iegūt dažāda veida kubu ( int , dubultā , peldēt ), izmantojot to pašu metodi.

Parasti metožu pārslodzi izmanto, lai definētu līdzīgas metodes ar dažādiem parametru veidiem.

Kas ir metodes ignorēšana?

Tas attiecas uz atšķirīgu metodes ieviešanu apakšklasē. Metodei jau jābūt definētai vecāku klasē.

Galvenajai metodei (t.i., apakšklasei) ir jābūt tādam pašam metodes parakstam kā virsklasē. Galvenās metodes atgriešanas veids var būt tāds pats vai apakšklases veids kā virsklasē.

Pacelšana parasti tiek izmantota, lai apakšklasē iekļautu konkrētu objekta uzvedības īstenošanu.

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

Izeja:

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!

Iepriekš minētais piemērs parāda, kā šī metode tiek izmantota ziņa () apakšklasēs ir ignorēts Ietaupījumi un FixedDeposit . Tiks parādīti dažādi ziņojumi bankas kontu turētājiem ar krājkontu un tiem, kuriem ir fiksēta noguldījuma konts.

Saistīts: Kas jums jāzina par virkņu izmantošanu Java

Ir arī vērts atzīmēt, ka metodes ignorēšana demonstrē izpildlaika polimorfismu vai dinamisku metožu nosūtīšanu. Tas nozīmē, ka izsaucamā metode tiek atrisināta izpildes laikā, nevis apkopojot.

Lai izvairītos no metodes ignorēšanas, izmantojiet atslēgvārdu fināls .

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

Kad apakšklase mēģina to ignorēt, radīsies apkopošanas kļūda.

Ideālā gadījumā visām konstruktora ietvaros izsauktajām metodēm vajadzētu būt fināls . Tas tiek darīts, lai izvairītos no neparedzētām izmaiņām, ko var izraisīt apakšklases.

Dažreiz jums var būt nepieciešama piekļuve ignorējamai metodei. Jūs varat izmantot atslēgvārdu super kam seko punktu operators ( . ) un metodes nosaukums šādā gadījumā.

Apsveriet superklasi Dzīvnieks .

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

Zemāk ir apakšklase, ko sauc Zivis , tas ignorē pārvietot() :

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

Izeja:

kā es varu aizsargāt savas fotogrāfijas
I can swim.
I can move.

Pārvietojot metodi, jums jāņem vērā arī izmantotais piekļuves modifikators. Apakšklases pārveidotājam vajadzētu būt tādam pašam redzamības līmenim vai augstākam kā pamatklasē. Piemēram, ja pamatklases metode ir definēta kā aizsargāti , tad galvenā metode var būt vai nu aizsargāti vai publiski .

Vienkāršs kods ar polimorfismu

Metodes ignorēšana un pārslodze ir svarīga koda vienkāršošanai, un vienkāršs kods ir laba prakse.

Kāpēc? Iedomājieties sarežģītu koda bāzi ar vairākām iespējām un iespējām nekā Grand Central Station. Tagad iedomājieties, ka postošā kļūda sāk iznīcināt jūsu smago darbu jūsu acu priekšā. Jums ir jāizolē infekcijas avots, un tas jādara ātri.

Labu veiksmi, jūs neesat vienkāršojis savu kodu ... Tagad jūs gūsit patiesu kriptogrāfijas mācību. Efektīvu datu struktūru izmantošana un visu iespējamo, lai saīsinātu kodu (piemēram, paturot prātā DRY), ir labākā aizsardzība pret šādu situāciju.

Nākamajā Java mācību sarakstā vajadzētu strādāt ar masīviem. Tās ir svarīgas datu struktūras, ko izmanto datu punktu partiju glabāšanai.

Kopīgot Kopīgot Čivināt E -pasts Kā izveidot un veikt masīvu darbības Java

Mācīties Java? Ļaujiet masīviem viegli apstrādāt jūsu datus.

Lasīt Tālāk
Saistītās tēmas
  • Programmēšana
  • Java
  • Kodēšanas apmācības
Par autoru Džeroms Deividsons(22 raksti publicēti)

Džeroms ir MakeUseOf personāla rakstnieks. Viņš aptver rakstus par programmēšanu un Linux. Viņš ir arī kriptogrāfijas entuziasts un vienmēr seko līdzi kriptogrāfijas nozarei.

Vairāk no Džeroma Deividsona

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu