Polimorfisme a Java: Com sobrecarregar o anul·lar mètodes

Polimorfisme a Java: Com sobrecarregar o anul·lar mètodes

La sobrecàrrega i la substitució de mètodes són les dues maneres en què Java demostra el polimorfisme. El polimorfisme prové d'una combinació de dues paraules gregues: 'poly' que significa molts i 'morph' que significa forma. Per tant, el polimorfisme permet que els mètodes adopten moltes formes.





Seguiu aquesta guia per aprendre a sobrecarregar o anul·lar mètodes a Java.





Què és la sobrecàrrega del mètode?

La 'sobrecàrrega de mètodes' fa referència a la definició de mètodes diferents en una classe amb el mateix nom. Els mètodes han de tenir signatures diferents. Una signatura de mètode és la combinació del nom i la llista de paràmetres d’un mètode. No inclou el tipus de retorn.





El compilador sap quin mètode s’ha d’utilitzar comprovant el tipus, el nombre de paràmetres i l’ordre en què es col·loquen.

Relacionat: Exploració de l'herència en el llenguatge de programació Java



La sobrecàrrega del mètode demostra polimorfisme en temps de compilació. El polimorfisme en temps de compilació significa que el compilador Java uneix un objecte a la seva funcionalitat en temps d'execució. El compilador comprova les signatures del mètode per aconseguir-ho.

Aquest tipus de polimorfisme també es coneix com a unió estàtica o primerenca.





Vegeu l'exemple de sobrecàrrega del mètode següent:

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

Sortida:





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

El codi anterior mostra com es pot obtenir un cub de diferents tipus ( int , doble , flotar ) utilitzant el mateix mètode.

En general, la sobrecàrrega de mètodes s’utilitza per definir mètodes similars amb diferents tipus de paràmetres.

Què és el mètode primordial?

Això fa referència a una implementació diferent d’un mètode en una subclasse. El mètode ja s'ha d'haver definit a la classe pare.

El mètode de substitució (és a dir, el de la subclasse) ha de tenir la mateixa signatura de mètode que la de la superclasse. El tipus de retorn del mètode de substitució pot ser el mateix o un subtipus del de la superclasse.

La substitució generalment s'utilitza per incloure una implementació específica del comportament d'un objecte a la subclasse.

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

Sortida:

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!

L'exemple anterior mostra com funciona el mètode missatge () està anul·lat a les subclasses Estalvis i FixedDeposit . Es mostraran diferents missatges per als titulars de comptes bancaris amb un compte d’estalvi i els que tinguin un compte de dipòsit fix.

Relacionat: Què cal saber sobre l'ús de les cadenes a Java

També val la pena assenyalar que la substitució del mètode demostra el polimorfisme en temps d'execució o l'enviament de mètodes dinàmics. Això significa que el mètode a anomenar es resol en temps d'execució més que en la compilació.

Per evitar que un mètode sigui anul·lat, utilitzeu la paraula clau final .

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

Quan una subclasse intenta anul·lar-la, es produirà un error de compilació.

Idealment, tots els mètodes anomenats dins d’un constructor haurien de ser-ho final . Això és per evitar els canvis no desitjats que puguin ser causats per les subclasses.

De vegades, és possible que hàgiu d’accedir a un mètode anul·lat dins del mètode de substitució. Podeu utilitzar la paraula clau súper seguit de l'operador de punts ( . ) i el nom del mètode en aquest cas.

Penseu en la superclasse animal .

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

A continuació hi ha una subclasse, anomenada Peix , que anul·la move () :

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

Sortida:

escriptori remot de Windows a Linux
I can swim.
I can move.

Quan anul·leu un mètode, també heu de tenir en compte el modificador d’accés utilitzat. El modificador de la subclasse hauria de tenir el mateix nivell de visibilitat o superior al de la classe base. Per exemple, si el mètode de la classe base es defineix com protegit , llavors el mètode principal pot ser protegit o bé públic .

Codi simple amb polimorfisme

La substitució i la sobrecàrrega de mètodes són importants per simplificar el codi i el codi simple és una bona pràctica.

Per què? Imagineu-vos una base de codis complexa amb més entrades i sortides que la Grand Central Station. Ara imagineu que un error devastador comença a destruir el vostre treball dur davant dels vostres ulls. Cal aïllar la font de la infecció i fer-ho ràpidament.

Bona sort, no heu simplificat el codi ... Ara esteu a punt d’obtenir una veritable lliçó de criptografia. Emprar estructures de dades eficaços i fer tot el possible per escurçar el codi (com ara tenir present DRY) és la vostra millor defensa contra una situació com aquesta.

El següent de la llista d'aprenentatge de Java hauria de funcionar amb matrius. Són estructures de dades importants que s’utilitzen per emmagatzemar lots de punts de dades.

Compartir Compartir Tweet Correu electrònic Com crear i realitzar operacions en matrius a Java

Aprèn Java? Deixeu que les matrius gestionin les vostres dades amb facilitat.

Llegiu a continuació
Temes relacionats
  • Programació
  • Java
  • Tutorials de codificació
Sobre l'autor Jerome Davidson(22 articles publicats)

Jerome és escriptor de personal de MakeUseOf. Cobreix articles sobre programació i Linux. També és un entusiasta de la criptografia i manté sempre al dia la indústria de la criptografia.

Més de Jerome Davidson

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us