- Dažādi veidi, kā pārslogot metodi
- Mainot nr. no argumentiem
- Mainot datu tipu
- Kāpēc metodes pārslodze nav iespējama, mainot atgriešanas veidu
- Vai mēs varam pārslogot galveno metodi
- 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.
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
- Mainot argumentu skaitu
- 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:
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