Muchos estudiantes son estúpidos y no pueden notar la diferencia entre sobrecarga y anulación. Se recomienda no memorizar el conocimiento conceptual por memoria, sino comprenderlo y memorizarlo.
Déjame primero dar mi definición:
Primero, hablemos de: sobrecarga
(1) La sobrecarga de métodos es un medio para permitir que las clases procesen diferentes tipos de datos de manera unificada. Existen múltiples funciones con el mismo nombre al mismo tiempo, con diferentes parámetros/tipos. La sobrecarga es una manifestación del polimorfismo en una clase.
(2) La sobrecarga de métodos Java significa que se pueden crear múltiples métodos en una clase, tienen el mismo nombre, pero tienen diferentes parámetros y diferentes definiciones. Al llamar a los métodos, decidimos qué método usar por el número de parámetros y tipos de parámetros diferentes pasados a ellos. Esto es polimorfismo.
(3) Al sobrecargar, el nombre del método debe ser el mismo, pero el tipo de parámetro y el número son diferentes, y el tipo de valor de retorno puede ser el mismo o diferente. El tipo de retorno no puede usarse como criterios de distinción para sobrecargar las funciones.
Primero veamos el ejemplo de sobrecarga:
Public Class OverloadParent {public String getPerson (name de cadena) {return "Persona" + name; } public String getperson (int a age) {return "personb"; } public String getperson (name de cadena, int age) {return "Personc"; } public void getperson (nombre de cadena) {System.out.println ("¿Soy el método sobrecargado?"); }} public class OverloadChildextends OverloadParent {public void getperson (doble dinero) {system.out.println ("es un método sobrecargado"); }}Presta atención a la observación:
(1) Hay 4 métodos con el mismo nombre en OverloadParent
(2) Los tipos de parámetros y los números de los tres primeros métodos son inconsistentes, y el valor de retorno es el mismo, lo que constituye una sobrecarga
(3) El método 4 y el método 1 solo los valores de retorno son diferentes, y no constituyen sobrecarga, y el compilador no pasa.
PS: El valor de retorno es el resultado de la ejecución del método. Cuando llamamos al método, no especificaremos "Quiero llamar a un método con el valor de retorno del tipo XXX", no se convertirá en una característica de sobrecarga del método.
(4) sobrecarga hereda la demostración, y tiene todos los métodos propiedad de la demostración. Se sintió que el método existente no podía satisfacer las necesidades, por lo que simplemente sobrecargó una.
Banderas sobrecargadas: el nombre del método es el mismo, los parámetros son diferentes (número o tipo), y no tienen nada que ver con el valor de retorno.
Entonces hablemos de anular (anular)
(1) El polimorfismo entre la clase principal y la clase infantil redefine las funciones de la clase principal. Si un método definido en una subclase tiene el mismo nombre y parámetros que su clase principal, decimos que el método está anulando. En Java, las subclases pueden heredar métodos de la clase principal sin reescribir el mismo método.
Pero a veces la subclase no quiere heredar los métodos de la clase principal intacta, sino que quiere hacer ciertas modificaciones, lo que requiere la reescritura del método.
La reescritura de métodos también se llama sobrescritura del método.
(2) Si el método en la subclase tiene el mismo nombre del método, tipo de retorno y tabla de parámetros como método en la clase principal, el nuevo método anulará el método original.
Si necesita el método original en la clase principal, puede usar la palabra clave súper, que se refiere a la clase principal de la clase actual.
(3) los permisos de modificación de acceso de las funciones de subclase no pueden ser menores que los de la clase principal;
Echemos un vistazo a un ejemplo de sobrescribe:
public class overRideParent {public void fly () {System.out.println ("ican Fly!"); }} La clase pública anverideChild extiende overRideParent {@Override public void fly () {System.out.println ("Ican't Fly, pero puedo ejecutar!"); } public static vid main (string [] args) {sobrenSwiTeParent Child = new OverwriteChild (); child.fly (); }}¿Qué se producirá al ejecutar el método principal de Inveridechild?
La respuesta es: ¡No puedo, pero puedo correr!
Vemos:
(1) anveridechild y overrideParent tienen un método de mosca
(2) El valor de retorno y el modificador de la mosca son los mismos, solo el cuerpo del método es diferente
(3) Hay una anotación de @OverWrite antes del método de mosca de la subclase. JDK1.5 aparece y solo se usa para la herencia de clase. 1.6 se puede utilizar para la implementación de la interfaz. Esta anotación ayuda a verificar el compilador, y está bien no agregarla.
Banderas anuladas : el niño hereda la clase principal y tiene diferentes implementaciones para el mismo método.
Escenarios de aplicación
Sobrecarga: cuando las funciones del método son similares, pero se deben pasar diferentes parámetros.
Anulación: cuando una subclase tiene su propio comportamiento único, hereda de la clase principal y no puede satisfacer sus propias necesidades.
PD: La sobrecarga y la sobrescritura son manifestaciones del polimorfismo. El primero es el polimorfismo del compilador, mientras que el segundo es el polimorfismo de tiempo de ejecución.
Reglas para la reescritura de métodos:
1. La lista de parámetros debe ser exactamente la misma que el método que se reescribe, de lo contrario no se puede llamar reescritura pero sobrecargado.
2. El tipo devuelto siempre debe ser el mismo que el tipo de retorno del método sobrescribido, de lo contrario no se puede llamar reescritura pero sobrecargado.
3. El límite del modificador de acceso debe ser mayor que el modificador de acceso del método reescrito (público> protegido> predeterminado> privado)
4. El método de reescritura no debe lanzar nuevas excepciones de cheques o excepciones más ampliamente verificadas que la declaración del método de reescritura. Por ejemplo:
Un método de la clase principal declara una excepción de verificación IOException. Al reescribir este método, no puede lanzar una excepción, solo puede lanzar una excepción de subclase de IOException, y puede lanzar excepciones que no son de verificación.
Y las reglas para sobrecargar:
1. Debe tener diferentes listas de parámetros;
2. Puede haber un tipo de retorno que no lo regañe, siempre que la lista de parámetros sea diferente;
3. Puede haber diferentes modificadores de acceso;
4. Se pueden lanzar diferentes excepciones;
La diferencia entre reescribir y sobrecargar es:
Reescribir el polimorfismo funciona, llamar a métodos sobrecargados puede reducir en gran medida el monto de entrada del código. Mientras el mismo nombre del método pase diferentes parámetros, puede tener diferentes funciones o valores de retorno.
Si usa bien la reescritura y la sobrecarga, puede diseñar una clase con una estructura clara y concisa. Se puede decir que el papel de reescribir y sobrecargar en el proceso de escritura del código es extraordinario.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.