Red de conocimientos turísticos - Conocimientos sobre calendario chino - Con respecto al tema de la herencia privada en Java, primero escriba el código

Con respecto al tema de la herencia privada en Java, primero escriba el código

La pregunta es:

En Java, ¿puede una subclase heredar el método constructor de la clase principal?

Nuestro profesor dijo que no se puede heredar, pero también dijo que la clase principal generalmente tiene un Si el método constructor de parámetros no hereda super(), entonces ¿qué diablos es? Colapso... Colapso...

La respuesta es:

Tu profesor tiene razón, pero no puede explicar claramente de una vez. Aquí tienes un ejemplo.

clase A{

public A(){}// 1: constructor sin parámetros.

public A(String s){} // 2.// 2.

}

la clase B extiende A{

public B(String s){

super(s); // 3.

}

}

Explicación: Si 1 No hay un constructor sin parámetros, entonces 3 debe llamar activamente al constructor parametrizado de la clase principal.

Si hay un constructor en la posición 1, entonces el código en la posición 3 se puede omitir, porque Java llamará automáticamente al constructor sin parámetros de la clase principal de forma predeterminada.

Recuerde una cosa: al construir una subclase, debe llamar al método constructor de la clase principal.

Por lo tanto, la clase padre tiene un constructor sin parámetros predeterminado, de modo que Java llamará automáticamente a este constructor sin parámetros. Si la clase principal no tiene un constructor sin parámetros, entonces debes llamar al constructor de la clase principal mediante super() en el constructor de la clase secundaria.

Otro método es:

No es necesario heredar el constructor de la clase principal. Podemos usar super para llamarlo. Por ejemplo, el constructor de la clase principal es: public A(){} ; entonces la subclase llama a super(); si es public A(int a); entonces la subclase llama a super(1);

La clase principal generalmente necesita tener un parámetro sin parámetros. constructor, porque nuestra subclase Debe haber un constructor sin parámetros. La razón para usar el constructor sin parámetros es que si nuestra subclase no llama explícitamente al constructor de la clase principal, agregará super () de forma predeterminada, es decir, se llama al constructor sin parámetros de la clase principal, y cuando la clase principal Cuando una clase; no tiene un constructor sin parámetros, arrojará un error, razón por la cual se agrega un constructor sin parámetros.

Además,

||||||||||||||||||||| La subclase hereda todo el contenido de la clase principal, pero algunos No accesibles en subclases. |||||||||||||||

privado significa que no se puede acceder a él, pero el método público de la clase principal puede llamar al método privado, por lo que la subclase, por supuesto, equivalente a llamar indirectamente al método privado de la clase principal, por lo que no sé si esto cuenta como herencia. Pero si la clase principal tiene un método privado que nunca se usa, entonces la subclase todavía está heredando en este punto, y aunque la subclase no puede llamarlo indirectamente en absoluto, la clase principal en realidad no puede llamarlo indirectamente.

Podemos llamar al constructor de la clase principal a través de super, que en realidad es lo mismo que el método, pero creo que el constructor simplemente no tiene accesibilidad de forma predeterminada, que es diferente del método. ¿Cómo acceder a él sin herencia?