logo

Metodes pārslodze Java

  1. Dažādi veidi, kā pārslogot metodi
  2. Mainot nr. no argumentiem
  3. Mainot datu tipu
  4. Kāpēc metodes pārslodze nav iespējama, mainot atgriešanas veidu
  5. Vai mēs varam pārslogot galveno metodi
  6. metodes pārslodze ar Type Promotion

Ja klasē ir vairākas metodes, kurām ir vienāds nosaukums, bet atšķiras parametri, tas ir pazīstams kā Metode Pārslodze .

Ja mums ir jāveic tikai viena operācija, metožu vienāds nosaukums palielina lasāmību programma .

sdlc

Pieņemsim, ka jums ir jāveic doto skaitļu saskaitīšana, bet var būt jebkurš argumentu skaits, ja jūs ierakstāt metodi, piemēram, a(int,int) diviem parametriem un b(int,int,int) trim parametriem, tad tā jums, kā arī citiem programmētājiem var būt grūti saprast metodes darbību, jo tās nosaukums atšķiras.

Tātad, mēs veicam metodes pārslodzi, lai ātri izdomātu programmu.

java metodes pārslodze

Metodes pārslodzes priekšrocība

Metodes pārslodze palielina programmas lasāmību .

Dažādi veidi, kā pārslogot metodi

Ir divi veidi, kā java metodi pārslogot

  1. Mainot argumentu skaitu
  2. Mainot datu tipu

Java programmā Method Overloading nav iespējama, mainot tikai metodes atgriešanas veidu.


1) Metode Pārslodze: mainot Nr. no argumentiem

Šajā piemērā mēs esam izveidojuši divas metodes: pirmā add() metode veic divu skaitļu pievienošanu, bet otrā pievienošanas metode veic trīs skaitļu pievienošanu.

Šajā piemērā mēs veidojam statiskās metodes lai mums nebūtu jāizveido gadījums metožu izsaukšanai.

 class Adder{ static int add(int a,int b){return a+b;} static int add(int a,int b,int c){return a+b+c;} } class TestOverloading1{ public static void main(String[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(11,11,11)); }} 
Izmēģiniet to tūlīt

Izvade:

 22 33 


2) Metodes pārslodze: argumentu datu veida maiņa

Šajā piemērā mēs esam izveidojuši divas metodes, kas atšķiras Izmēģiniet to tūlīt

Izvade:

 22 24.9 

J) Kāpēc metodes pārslodze nav iespējama, mainot tikai metodes atgriešanas veidu?

Java versijā metodes pārslodze nav iespējama, mainot metodes atgriešanas veidu tikai neskaidrības dēļ. Apskatīsim, kā var rasties neskaidrības:

 class Adder{ static int add(int a,int b){return a+b;} static double add(int a,int b){return a+b;} } class TestOverloading3{ public static void main(String[] args){ System.out.println(Adder.add(11,11));//ambiguity }} 
Izmēģiniet to tūlīt

Izvade:

 Compile Time Error: method add(int,int) is already defined in class Adder 

System.out.println(Adder.add(11,11)); //Lūk, kā java var noteikt, kura summa() metode ir jāizsauc?

Piezīme. Kompilēšanas laika kļūda ir labāka par izpildes laika kļūdu. Tātad, java kompilators rada kompilatora laika kļūdu, ja deklarējat to pašu metodi ar vienādiem parametriem.

Vai mēs varam pārslogot java main() metodi?

Jā, pēc metodes pārslodzes. Klasē var būt neierobežots skaits galveno metožu. Bet JVM izsauc metodi main(), kas saņem virkņu masīvu tikai kā argumentus. Apskatīsim vienkāršu piemēru:

 class TestOverloading4{ public static void main(String[] args){System.out.println('main with String[]');} public static void main(String args){System.out.println('main with String');} public static void main(){System.out.println('main without args');} } 
Izmēģiniet to tūlīt

Izvade:

 main with String[] 

Metodes pārslodze un veida veicināšana

Viens veids tiek netieši paaugstināts par citu, ja netiek atrasts atbilstošs datu tips. Sapratīsim jēdzienu, izmantojot zemāk redzamo attēlu:

Java metodes pārslodze ar tipa veicināšanu

Kā parādīts iepriekš redzamajā diagrammā, baitu var paaugstināt par īsu, int, garu, peldošu vai dubultu. Īso datu tipu var paaugstināt par int, long, float vai double. Char datu tipu var paaugstināt uz int, long, float vai double un tā tālāk.

Metodes pārslodzes piemērs ar TypePromotion

 class OverloadingCalculation1{ void sum(int a,long b){System.out.println(a+b);} void sum(int a,int b,int c){System.out.println(a+b+c);} public static void main(String args[]){ OverloadingCalculation1 obj=new OverloadingCalculation1(); obj.sum(20,20);//now second int literal will be promoted to long obj.sum(20,20,20); } } 
Izmēģiniet to tūlīt
 Output:40 60 

Metodes pārslodzes piemērs ar tipa paaugstināšanu, ja ir atrasta atbilstība

Ja metodē ir atbilstoši tipa argumenti, tipa veicināšana netiek veikta.

 class OverloadingCalculation2{ void sum(int a,int b){System.out.println('int arg method invoked');} void sum(long a,long b){System.out.println('long arg method invoked');} public static void main(String args[]){ OverloadingCalculation2 obj=new OverloadingCalculation2(); obj.sum(20,20);//now int arg sum() method gets invoked } } 
Izmēģiniet to tūlīt
 Output:int arg method invoked 

Piemērs metodes pārslodzei ar tipa veicināšanu neskaidrības gadījumā

Ja metodē nav atbilstoša tipa argumentu un katra metode veicina līdzīgu argumentu skaitu, radīsies neskaidrības.

kas ir map java
 class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } } 
Izmēģiniet to tūlīt
 Output:Compile Time Error 

Viena veida paaugstināšana netiek netieši atcelta, piemēram, dubultā nevar tikt netieši pazemināta par jebkuru tipu.