Características de acceso del método de construcción bajo relación de herencia

Primero, comprenda qué es la herencia : extracción de elementos comunes para mejorar la reutilización del código. En términos generales, el hijo hereda los genes del padre, pero no es exactamente igual al padre, sino diferente sobre la misma base. Se refleja en Java que una clase hereda otra clase.

Sintaxis básica:

                la subclase de clase pública extiende la clase principal{

                        //Después de crear un objeto de subclase, se puede acceder directamente a la información de miembros no privados de la clase principal a través del objeto de subclase

}

Entonces, bajo la relación de herencia, las características de acceso del método de construcción se dividen en los siguientes puntos:

1. Presente el constructor predeterminado

(1) Si un constructor no está escrito explícitamente en una clase, se presentará un constructor sin parámetros por defecto, y si está escrito explícitamente, ya no se presentará.

(2) Si no hay un super (parámetro) escrito en el método de construcción de la subclase, se presentará un super() por defecto;

(3) Si se muestra el método de construcción super(parámetro) con parámetros, no se regalará.

2. El uso de super y esto

(1) variable miembro de la clase padre superior

(2) método de miembro de la clase padre superior ()

(3) super (parámetro) //en el método de construcción de la subclase

3. Tres usos de esta palabra clave:
(1) this. Esta variable miembro de clase;
(2) this. Este método miembro de clase ();
(3) this (parámetro);//llamar a otros métodos de construcción de esta clase, no puede llamar sí mismo (recursivamente)

El tercer punto es relativamente fácil de ignorar, el siguiente código

public class Fu {         protected int a;         protected String b;         public Fu(int a,String b) { //constructor con parámetros en la clase padre                 this.a = a;                 this.b = b;         }





        public Fu() { //El constructor de la clase principal sin parámetros
                System.out.println("123");
        }
}

public class Zi extends Fu {         public Zi() {                 //super(); //Llama al constructor sin parámetros de la clase principal                 this(100,"xxx"); //Llama al constructor parametrizado de esta clase //this () ; //No se puede llamar a sí mismo, forma incorrecta de escribir         }         public Zi(int a,String b) {                 super(a,b); //mostrar la llamada al constructor de la clase padre con parámetros         }         public void test() {                 / /this() ;//Forma incorrecta de escribir         } }



                







Aviso:

(1) This() escrito en el método constructor o miembro es una llamada recursiva; y este (parámetro) solo puede llamar a otros constructores de esta clase y no puede llamarse a sí mismo recursivamente .

(2) this() y super() no pueden aparecer en un método al mismo tiempo. Debido a que un objeto no se puede inicializar repetidamente, está destinado a que los dos no puedan aparecer en el mismo constructor al mismo tiempo. Si se muestra this(), super() ya no se presentará de forma predeterminada.

(3) This() o super() solo pueden aparecer en la primera línea del método de construcción. Estas dos operaciones realizan la inicialización. Para garantizar el orden de inicialización, deben colocarse en la primera línea del método de construcción. Cuando no se escribe ninguna declaración super() en la primera línea, el compilador agregará automáticamente una declaración super() sin argumentos a la primera línea del constructor.

4. Al crear un objeto subclase se debe llamar al método de construcción de la clase padre, si no se muestra se llamará sin parámetros, si se muestra cual se escribe llamará a cual.

Supongo que te gusta

Origin blog.csdn.net/m0_48011056/article/details/125475440
Recomendado
Clasificación