En este tutorial discutiremos la diferencia entre sobrecargar y sobrescribir en Java. Si es nuevo en estos términos, consulte las siguientes publicaciones:

  1. Sobrecarga de métodos en java
  2. Método que anula en java

Sobrecarga vs sobrescritura en Java

  1. La anulación ocurre en tiempo de compilación mientras que la anulación ocurre en tiempo de ejecución: la asociación de la llamada al método sobrecargado a su definición ocurre en tiempo de compilación, sin embargo, la asociación de la llamada al método anulado a su definición ocurre en la ejecución.
  2. Los métodos estáticos se pueden sobrecargar, lo que significa que una clase puede tener más de un método estático con el mismo nombre. Los métodos estáticos no se pueden anular, incluso si declara el mismo método estático en la clase secundaria, no tiene nada que ver con el mismo método que la clase principal.
  3. La diferencia más fundamental es que la sobrecarga se realiza en la misma clase, mientras que se requieren las clases base y secundaria. La anulación consiste en dar una implementación específica al método heredado de la clase padre.
  4. El enlace estático se usa para métodos sobrecargados y el enlace dinámico se usa para métodos reemplazados / reemplazados.

  5. Rendimiento: la anulación ofrece un mejor rendimiento que la anulación. El motivo es que el enlace de los métodos anulados se realiza en tiempo de ejecución.
  6. Los métodos privados y finales se pueden sobrecargar, pero no se pueden anular. Significa que una clase puede tener más de un método privado / final con el mismo nombre, pero una clase secundaria no puede anular los métodos privados / finales de su clase base.
  7. El tipo de método devuelto no importa si el método está sobrecargado, puede ser el mismo o diferente. Sin embargo, en el caso de que se anule un método, el método de anulación puede tener un tipo de retorno más específico (Reporta esto).
  8. La lista de argumentos debe ser diferente durante la sobrecarga del método. La lista de argumentos debe ser la misma en el método Overriding.

Ejemplo de sobrecarga

//A class for adding upto 5 numbers
class Sum
{
    int add(int n1, int n2) 
    {
        return n1+n2;
    }
    int add(int n1, int n2, int n3) 
    {
        return n1+n2+n3;
    }
    int add(int n1, int n2, int n3, int n4) 
    {
        return n1+n2+n3+n4;
    }
    int add(int n1, int n2, int n3, int n4, int n5) 
    {
        return n1+n2+n3+n4+n5;
    }
    public static void main(String args[])
    {
    	Sum obj = new Sum();
    	System.out.println("Sum of two numbers: "+obj.add(20, 21));
    	System.out.println("Sum of three numbers: "+obj.add(20, 21, 22));
    	System.out.println("Sum of four numbers: "+obj.add(20, 21, 22, 23));
    	System.out.println("Sum of five numbers: "+obj.add(20, 21, 22, 23, 24));
    }
}

Producción:

Sum of two numbers: 41
Sum of three numbers: 63
Sum of four numbers: 86
Sum of five numbers: 110

Aquí tenemos 4 versiones del mismo método add. Estamos sobrecargando el método add() Aquí.

Ejemplo de prioridad

package beginnersbook.com;
class CarClass
{
    public int speedLimit() 
    {
        return 100;
    }
}
class Ford extends CarClass
{
    public int speedLimit()
    {
        return 150;
    }
    public static void main(String args[])
    {
    	CarClass obj = new Ford();
    	int num= obj.speedLimit();
    	System.out.println("Speed Limit is: "+num);
    }
}

Producción:

Speed Limit is: 150

Aquí speedLimit() método de lección Ford está sobrescribiendo el speedLimit() método de lección CarClass.

leer  Herencia jerárquica en java con programa de ejemplo

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *