Sobrecarga: múltiples funciones con el mismo nombre pero el mismo nombre de método pero diferentes parámetros
Nota: 1. Parámetros diferentes significa que hay al menos una diferencia en el tipo de parámetro, la cantidad de parámetros y el orden de los parámetros.
2. Los valores de retorno, las excepciones y los modificadores de acceso no se pueden usar como condiciones para la sobrecarga (porque para llamadas anónimas, se producirá ambigüedad, por ejemplo: void a () e int a(), si se llama a (), se producirá ambigüedad).
3.El método principal también puede estar sobrecargado.
Anulación: la subclase reescribe el método de la clase principal, lo que requiere que el nombre del método y el tipo de parámetro sean exactamente iguales (los parámetros no pueden ser subclases), el valor de retorno y la excepción sean menores o iguales que los de la clase principal (es decir es decir, son subclases de la clase principal) y los modificadores de acceso son más pequeños que los de la clase principal. La clase principal es mayor o igual.
Dos iguales, dos pequeñas y una grande.
Nota: Los métodos de instancia de subclase no pueden anular los métodos estáticos de clase principal; los métodos estáticos de subclase no pueden anular los métodos de instancia de clase principal (se produce un error durante la compilación, los métodos no se pueden cubrir de forma cruzada).
Oculto: cuando la clase principal y la subclase tienen atributos o métodos con el mismo nombre, el atributo o método de la clase principal con el mismo nombre falta en la forma, pero en realidad todavía existe.
Nota: Cuando se produce la ocultación, sea cual sea la clase del tipo de declaración, se llamarán las propiedades o métodos de la clase correspondiente y no se producirá el enlace dinámico.
Solo existe una forma de ocultación de métodos, es decir, existe el mismo método estático en la clase principal y en la subclase.
Las propiedades sólo se pueden ocultar, no sobrescribir
Las variables de instancia/variables estáticas de subclase pueden ocultar las variables de instancia/estáticas de la clase principal. En resumen, las variables se pueden ocultar de forma cruzada.
La diferencia entre esconder y cubrir:
Atributos ocultos: después de que la subclase se convierte en la clase principal, se accede a los atributos de la clase principal.
El método anulado, después de que se fuerza la conversión de la subclase a la clase principal, todavía llama al método de la subclase misma.
Debido a que la cobertura está vinculada dinámicamente y está sujeta a RTTI (identificación de tipo de tiempo de ejecución, inspección de tipo de tiempo de ejecución), la ocultación no está sujeta a RTTI. En resumen, RTTI es solo para cobertura, no para ocultación.
Circunstancias especiales:
1. Las propiedades modificadas por final se pueden ocultar, pero no se pueden asignar, es decir, no se pueden asignar con =. Se dice en línea que las propiedades finales no se pueden modificar. Esta afirmación no es exacta, porque después de una variable de tipo de referencia. se modifica con final, simplemente no se puede modificar. Apunta a otros objetos, pero puede cambiar su propio valor. Se puede probar con ArrayList. El atributo final se puede inicializar en tiempo de ejecución, pero la declaración de inicialización debe aparecer.
2. Los métodos modificados finales no se pueden anular y se pueden sobrecargar.
3. Las clases modificadas finales no se pueden heredar.
4. El método privado agrega implícitamente final