- Comprender el problema sin anular el método
- ¿Podemos anular el método estático?
- Sobrecarga de métodos versus anulación de métodos
Si la subclase (clase secundaria) tiene el mismo método declarado en la clase principal, se conoce como método anulando en Java .
En otras palabras, si una subclase proporciona la implementación específica del método que ha sido declarado por una de sus clases principales, se conoce como anulación de método.
Uso de la anulación de métodos Java
- La anulación de métodos se utiliza para proporcionar la implementación específica de un método que ya proporciona su superclase.
- La anulación de métodos se utiliza para el polimorfismo en tiempo de ejecución.
Reglas para la anulación de métodos Java
- El método debe tener el mismo nombre que en la clase padre.
- El método debe tener el mismo parámetro que en la clase principal.
- Debe existir una relación IS-A (herencia).
Comprender el problema sin anular el método
Entendamos el problema que podemos enfrentar en el programa si no utilizamos la anulación de métodos.
//Java Program to demonstrate why we need method overriding //Here, we are calling the method of parent class with child //class object. //Creating a parent class class Vehicle{ void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike extends Vehicle{ public static void main(String args[]){ //creating an instance of child class Bike obj = new Bike(); //calling the method with child class instance obj.run(); } }Pruébalo ahora
Producción:
Vehicle is running
El problema es que tengo que proporcionar una implementación específica del método run() en la subclase, por eso usamos la anulación de métodos.
Ejemplo de anulación de método
En este ejemplo, hemos definido el método de ejecución en la subclase tal como se define en la clase principal, pero tiene alguna implementación específica. El nombre y el parámetro del método son los mismos y existe una relación IS-A entre las clases, por lo que se anula el método.
//Java Program to illustrate the use of Java Method Overriding //Creating a parent class. class Vehicle{ //defining a method void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike2 extends Vehicle{ //defining the same method as in the parent class void run(){System.out.println('Bike is running safely');} public static void main(String args[]){ Bike2 obj = new Bike2();//creating object obj.run();//calling method } }Pruébalo ahora
Producción:
Bike is running safely
Un ejemplo real de anulación de métodos Java
Considere un escenario en el que Banco es una clase que proporciona funcionalidad para obtener la tasa de interés. Sin embargo, la tasa de interés varía según los bancos. Por ejemplo, los bancos SBI, ICICI y AXIS podrían ofrecer tipos de interés del 8%, 7% y 9%.
La anulación de métodos de Java se utiliza principalmente en el polimorfismo en tiempo de ejecución, que aprenderemos en las páginas siguientes.
//Java Program to demonstrate the real scenario of Java Method Overriding //where three classes are overriding the method of a parent class. //Creating a parent class. class Bank{ int getRateOfInterest(){return 0;} } //Creating child classes. class SBI extends Bank{ int getRateOfInterest(){return 8;} } class ICICI extends Bank{ int getRateOfInterest(){return 7;} } class AXIS extends Bank{ int getRateOfInterest(){return 9;} } //Test class to create objects and call the methods class Test2{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); AXIS a=new AXIS(); System.out.println('SBI Rate of Interest: '+s.getRateOfInterest()); System.out.println('ICICI Rate of Interest: '+i.getRateOfInterest()); System.out.println('AXIS Rate of Interest: '+a.getRateOfInterest()); } }Pruébalo ahora
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
¿Podemos anular el método estático?
No, un método estático no se puede anular. Se puede probar mediante polimorfismo en tiempo de ejecución, por lo que lo aprenderemos más adelante.
¿Por qué no podemos anular el método estático?
Esto se debe a que el método estático está vinculado a una clase, mientras que el método de instancia está vinculado a un objeto. Estático pertenece al área de clase y una instancia pertenece al área del montón.
¿Podemos anular el método principal de Java?
No, porque el principal es un método estático.
Diferencia entre sobrecarga de métodos y anulación de métodos en Java
Haga clic aquí para conocer la diferencia entre sobrecarga y anulación de métodos.
Más temas sobre anulación de métodos (no para principiantes)
Anulación de método con modificador de accesoVeamos el concepto de anulación de método con modificador de acceso.
Manejo de excepciones con anulación de métodosVeamos el concepto de anulación de métodos con manejo de excepciones.