En Java, durante el proceso de construcción de una subclase, se debe llamar al constructor de su clase principal. Esto se debe a que cuando existe una relación de herencia, la subclase debe heredar el contenido de la clase principal.
La respuesta es la siguiente:
Cuando crea un nuevo objeto de subclase, primero debe crear un nuevo objeto de la clase principal. Este objeto de clase principal se encuentra dentro del objeto de subclase. Por lo tanto, el objeto de subclase es más grande que el objeto de clase principal. Situación real en la memoria. Cuando el método de construcción es un objeto nuevo, se debe llamar. Esta es una regla. Si desea crear un objeto de clase padre, debe llamar a su método de construcción, por lo que:
La primera regla: durante el proceso de construcción de una subclase, se debe llamar al método de construcción de su clase principal. Para una clase, si no escribimos un constructor, el compilador nos ayudará a agregar un constructor predeterminado. El llamado constructor predeterminado es un constructor sin parámetros, pero si escribe el constructor usted mismo, el compilador no lo hará. agregado para usted, por lo que a veces cuando crea un nuevo objeto de subclase, se debe llamar al constructor de la subclase, pero en el constructor de la subclase, no llamamos explícitamente al constructor de la clase base, es decir, no hay escritura , como por ejemplo: super(); No está escrito así, pero llamará al constructor sin parámetros de la clase principal. Si no hay un constructor sin parámetros en la clase principal, se producirá un error.
La segunda regla: si no hay una llamada explícita al constructor de la clase base en el constructor de la subclase, el sistema llama de forma predeterminada al constructor sin parámetros de la clase base. Nota: si no hay una llamada explícita al constructor de la clase base en el. constructor de la subclase. y no hay un constructor predeterminado sin parámetros en la clase base, se produce un error de compilación. Por lo tanto, generalmente necesitamos mostrar: super (lista de parámetros) para llamar al constructor de la clase principal con parámetros.
//Si defines un nuevo constructor
Animal público (nombre de cadena) {
this.nombre = nombre;
}
}
perro público extiende animal {
// En este momento, debe llamar explícitamente al constructor de la clase principal, porque la subclase llama a la clase principal de forma predeterminada.
//Constructor sin parámetros Animal()
Perro público(){
super("puppy"); //Muestra el método constructor parametrizado para llamar a la clase principal
.... //Procesamiento del método constructor de subclases
}
}
//Por supuesto, si escribes explícitamente el constructor sin parámetros en la clase principal, por ejemplo:
clase animal{
nombre de cadena privada;
//Método de construcción sin parámetros
Animal público() {
..... //tratar con
}
/*
Si define un nuevo constructor, entonces en el constructor de la subclase, puede llamar al constructor de la clase principal sin llamarlo explícitamente, porque la subclase tiene un constructor sin parámetros.
La subclase llamará automáticamente al constructor sin parámetros definido por la clase principal en el constructor.
*/
Animal público (nombre de cadena) {
this.nombre = nombre;
}
}