Diferencia entre la anulación y la sobrecarga de métodos en Java

La diferencia entre la anulación del método Java (Override) y la sobrecarga (Overload) (super detallada)

InicioAntes de querer aprender este punto de conocimiento, primero debemos entender qué es el polimorfismo.

Cuando aprenden java por primera vez, todos saben que java, un lenguaje orientado a objetos, tiene tres características: encapsulación, herencia y polimorfismo.

El polimorfismo es la capacidad de tener múltiples manifestaciones o formas diferentes del mismo comportamiento.

Por ejemplo, la mayoría de los animales (clases abstractas) pueden ladrar, pero los perros (clases de implementación) ladran y los gatos (clases de implementación) maúllan.

Condiciones necesarias para la implementación polimórfica

  1. La subclase debe heredar la clase principal
  2. volver a escribir
  3. Puntos de referencia de la clase principal al objeto de la clase secundaria

Cómo implementar el polimorfismo

Hay tres formas de implementar polimorfismo: reescritura, sobrecarga e implementación de interfaz Aunque sus métodos de implementación son diferentes, el núcleo es: diferentes manifestaciones del mismo comportamiento.

Después de una comprensión general de lo que es el polimorfismo, echemos un vistazo al método Java Override and Overload

1. Anular

  1. La relación polimórfica entre la clase principal y la clase secundaria redefine las funciones de la clase principal. Si algún método definido en la subclase tiene el mismo nombre y parámetros que la superclase, entonces este es el método que se anula.
    Pero a veces la subclase no quiere heredar el método de la clase padre y quiere hacer algunos cambios, lo que requiere reescribir el método.
    La reescritura del método se refleja en la clase sub-padre. Lo más típico es que la sub-clase reescribe el método en la clase padre. El
    código de reescritura es el siguiente:
public class Father {
    
    
        public void walk(){
    
    
            System.out.println("我是父亲");
      }

}

public class Son extends Father {
    
    
    @Override//方法重写
    public void walk() {
    
    
        System.out.println("我是儿子");
    }
}
  1. La anulación de métodos también se conoce como anulación de métodos.
    Si un método de subclase tiene el mismo nombre de método, tipo de retorno y lista de parámetros que un método en la superclase, el nuevo método anulará al anterior.
  2. Los derechos de modificación de acceso del método de la subclase no pueden ser menores que los de la superclase.

2. Sobrecarga

  1. Existen varios métodos con el mismo nombre al mismo tiempo, con diferentes parámetros/tipos. La sobrecarga es una manifestación de polimorfismo en una clase.
  2. Al sobrecargar, el nombre del método debe ser el mismo, pero el tipo y el número del parámetro son diferentes, y el tipo de valor de retorno puede ser el mismo o diferente . ¡No podemos usar el tipo de valor de retorno como un criterio distintivo para los métodos sobrecargados! ! ! Si el tipo de parámetro es el mismo que el número y el tipo de valor de retorno es diferente, no está sobrecargado .
    Esta forma de escribir informará directamente un error. Porque no sabemos el tipo de valor de retorno del método cuando el método se llama, el compilador no puede distinguir qué método se llama.
  3. Al llamar a los métodos, se determina qué método correspondiente usar pasándoles diferentes números de parámetros y tipos de parámetros. Esto es polimorfismo.
    El código de sobrecarga es el siguiente:
public void eat(){
    
    
        System.out.println("我是干饭人" );
    }

//    public int eat(){  会报错
//        return 4;
//    }
    //报错原因:参数类型和个数一样,返回值类型不同是不算重载的
    //因为在调用方法的时候,我们还不知道方法的返回值类型,所以编译器无法区分你调用的是哪个方法。


    public void eat(String name){
    
    
        System.out.println("我是干饭人:"+name );
    }

    public void eat(String name,int age){
    
    
        System.out.println("我是干饭人:"+name+"我今年"+age );
    }

Tenga en cuenta aquí:
Overriding Override es una relación polimórfica entre las clases principales y las subclases , mientras que la sobrecarga Overload esmanifestación de polimorfismo en una clase .

3. Resumen

Sobrecarga del método Sobrecarga:

1. En la misma clase

2. El nombre del método es el mismo, pero la lista de parámetros es diferente (orden de parámetros, número, tipo)

3. Los valores de retorno del método, los modificadores de acceso son arbitrarios

4. No tiene nada que ver con el nombre del parámetro del método.

El método anula Override:

1. En la subclase con relación de herencia

2. El nombre del método es el mismo, la lista de parámetros es la misma (orden de parámetros, número, tipo) y el valor de retorno del método es el mismo

3. Modificador de acceso, el rango de acceso debe ser mayor o igual que el rango de acceso de la clase principal

4. No tiene nada que ver con el nombre del parámetro del método.

Supongo que te gusta

Origin blog.csdn.net/weixin_46015018/article/details/122600829
Recomendado
Clasificación