La clase de neutrones de Java llama al método de construcción de la clase principal, asuntos que requieren atención

 

Una característica de la herencia es que la subclase no puede acceder a la privada campo o privada método de la clase padre . Por ejemplo, la clase Estudiante no puede acceder a los campos de nombre y edad de la clase Persona :

class Person { nombre de cadena
    privada ;
   
int edad privada ;
}

clase Estudiante extiende Persona { cadena
    pública hello () {
       
return "Hola," + nombre; // Error de compilación: No se puede acceder al campo de nombre     } }

Esto debilita el papel de la herencia. Para permitir que las subclases accedan a los campos de la clase principal, necesitamos cambiar de privado a protegido . Se puede acceder a los campos modificados con protected por subclases:

class Person { nombre de cadena
    protegido ;
   
int edad protegida ;
}

clase Estudiante extiende Persona { Cadena
    pública hola () {
       
devolver "Hola," + nombre; // ¡OKAY!
    }
}

Por lo tanto, la palabra clave protegida puede controlar los derechos de acceso de campos y métodos dentro del árbol de herencia. Se puede acceder a un campo y método protegidos por sus subclases y subclases de la subclase. Explicaremos en detalle más adelante.

2. El uso de super

La palabra clave super representa la clase principal (superclase). Cuando la subclase se refiere al campo de la clase principal, se puede usar super.fieldName . P.ej:

clase Estudiante extiende Persona { Cadena
    pública hola () {
       
devolver "Hola," + super .nombre;

    }
}

 

 

 

La ejecución del código anterior provocará errores de compilación, no se puede llamar al método de construcción del estudiante y al método de construcción Person.

Análisis: Cualquier método de construcción de clases debe primero construir el método de construcción de clases padre. Si el método de construcción de la clase padre no se llama explícitamente, el compilador agregará automáticamente un super () para nosotros, por lo que el método de construcción de la clase Student es en realidad así

 

Entonces el problema es que la clase padre, la clase Person, no tiene un constructor predeterminado, y la subclase, Student, debe mostrar el constructor después de llamar a la sobrecarga, es decir

 

La escritura en la clase de Estudiantes es

uploading.4e448015.gifSubiendo ... re-subida cancelada

 

Resumen: Si la clase padre no tiene un método de construcción predeterminado, la subclase debe llamar explícitamente a super () y proporcionar los parámetros para que el compilador pueda localizar un método de construcción adecuado. Al mismo tiempo, la subclase no heredará ningún método de construcción de la clase principal. El método de construcción predeterminado de la subclase es generado automáticamente por el compilador, no heredado

 

 

Supongo que te gusta

Origin blog.csdn.net/zl1107604962/article/details/105439625
Recomendado
Clasificación