- - Vadovėlis: metodo perkrovimas „Java“ programoje su kodu

Vadovėlis: Metodo perkrovimas „Java“ su kodu

Nuo šiol jūs esate susipažinę su akimirksniuvidinės „Java“ klasės, galime kalbėti apie polimorfizmą ir metodo perkrovą. Polimorfizmas yra „Java“ objekto gebėjimas vienodai reaguoti, norint pasiekti specifinį elgesį su to paties pavadinimo, bet skirtingais diegimo metodo iškvietimais. „Java“ sistemoje polimorfizmo sampratą galima pasiekti keliais būdais. Čia yra mūsų „Java“ mokymo programa su metodo perkrovos kodu.

„Java“ mokymo programa su metodo perkrovos kodu.

Kas yra metodo perkrova

„Java“ programoje galima apibrėžti dvi ar daugiautos pačios klasės metodai, turintys tą patį pavadinimą. Tačiau jų parametrų deklaracijos turėtų būti skirtingos. Sakoma, kad šių tipų metodai yra perkrauti, o procesas vadinamas metodo perkrovimu.

Metodo perkrovimas palaiko polimorfizmą nes tai yra vienas iš būdų „Java“ įgyvendinti „vienos sąsajos, kelių metodų“ paradigmą.

Savybės

  • Klasėje perkrovos metodo koncepcija neleidžia išoriniam vartotojui žinoti apie vidinį sistemos apdorojimą.
  • Perkrovos metodai skiriasi tiek parametrų skaičiumi, tiek parametrų tipu, tiek parametrų seka.
  • Perkrovos metodai išsprendžiami šiomis sekomis:
    1. Parametrų skaičius.
    2. Parametrų tipas.
    3. Parametrų seka.

Remiantis šiais metodais, atitinkamai remiamasi norima išvestimi.

  • Metodo perkrovimas leidžia vartotojui pasiekti sudaryti laiko polimorfizmą.
  • Perkrovos metodai gali turėti tuos pačius arba skirtingus grąžinimo tipus.

„Java“ programa metodo perkrovai

class Figure{
/* Calculate Area of Square */
void area(double length){
System.out.println("Area of Square is: "+Math.pow(length,2));
}
/* Calculate Area of Rectangle */
void area(double length,double breadth){
System.out.println("Area of Rectangle is: "+(length*breadth));
}
/* Calculate Area of Cylinder */
void area(double radius,int height){
System.out.println("Area of Cylinder is: "+(2*3.14*Math.pow(radius,2)*height));
}
/* Calculate Area of Cube */
void area(int arms){
System.out.println("Area of Cube is: "+(6*arms*arms));
}
}
class CalculateArea{
public static void main(String args[]){
Figure fig = new Figure();
fig.area(5.25);
fig.area(4.5,5.5);
fig.area(2);
fig.area(3.2,6);
}
}

Metodo perkrovos išvestis.

„Java“ mokymo programa su metodo perkrovos kodu.

„Java Code & Output“ paaiškinimas

Čia klasėje Figūros sritis () yra perkrautametodas, turintis tą patį pavadinimą su skirtingais įgyvendinimais, t. y. paradigma „viena sąsaja, keli metodai“. Galite nesunkiai įsitikinti, kad tas pats metodas naudojamas skirtingoms operacijoms atlikti, t. Y. Apskaičiuojant skirtingų geometrinių sričių plotus pagal perduotų parametrų skaičių / tipą / seką ir sukuriant norimą išvestį.

Kreipimasis į metodą gali būti bet kokia tvarka. Kaip metodo plotą (), kad būtų galima apskaičiuoti kubelio plotą, prieš kurį iškviečiamas metodo plotas (), kad būtų galima apskaičiuoti cilindro plotą.

Programoje mes taip pat vadinome vieną matematikos klasės statinį metodą pow (), kuris yra „java.lang“ paketo narys, kad apskaičiuotų bet kokio skaičiaus kvadratą.

Blykstė įjungta

Sprendžiant perkrautus metodus, „Java“ dirbaautomatinio tipo konversijos tik tuo atveju, jei nerandama tiksli atitiktis. Kaip matote žemiau, perkrova neapibrėžia ekrano (vidinio), tačiau jis jau turi apibrėžtą ekraną (dvigubą).

Todėl, kai ekranas () iškviečiamas susveikasis skaičius „OverloadDemo“ viduje, atitikties metodas nerastas. Tačiau „Java“ gali automatiškai konvertuoti sveikąjį skaičių į dvigubą, ir ši konversija gali būti naudojama skambučiui nutraukti. Todėl neradus ekrano (int), „Java“ padidina „i“ dvigubai, tada iškviečia ekraną (dvigubą). Žinoma, jei būtų apibrėžta „rodymas (int)“, ji būtų vadinta.

class Overload {
// display method with no parameters
void display() {
System.out.println("No parameters");
}
// Overload display for two integer parameters.
void display(int a, int b) {
System.out.println("a and b: " + a + " " + b);
}
// overload display for a double parameter
void display(double a) {
System.out.println("a: " + a);
}
}
class OverloadDemo {
public static void main(String args[]) {
Overload overload = new Overload();
int i = 88;
ob.display();
ob.display (10, 20);
ob.display (i); // this will invoke display(double)
ob.display (123.2); // this will invoke display(double)
}
}

N.B: Ši konversija galioja mažesnio duomenų tipo (pvz., Int) konvertavimui į aukštesnio tipo duomenų (pvz., Dvigubą), o ne atvirkštinės (dvigubos į int) konversijos.

Kitame vadove mes sužinosime apie konstruktorių perkrovą „Java“.

Komentarai