¿habrá creación de objetos de clase primaria si creamos un objeto de clase secundaria?

Sé que se llamará a super cada vez que creamos un objeto de clase hijo. Pero, lo que específicamente quiero saber es que cargará la clase o creará el objeto de esa clase principal.

Gracias por adelantado.

Respuesta 1

Tienes un solo objeto.
Cuando se instancia una clase, primero invoca al constructor de la clase padre. Y para cada clase principal, sigue la misma lógica: invoca primero al constructor de la clase principal.

Supongamos: Ase Bextiende se extiende C.

new A()da como resultado la Binvocación del constructor que invoca al Cconstructor.
Como Cluego Bse devuelven invocaciones constructor, el Aconstructor puede seguir y la instancia Ase crea.

Pero, lo que específicamente quiero saber es que cargará la clase o creará el objeto de esa clase principal.

De manera similar a la ejecución del constructor, antes de cargar una clase, su clase primaria debe cargarse firsty eso de forma recursiva para cada clase primaria.

Aquí las clases correspondientes a Aextend Bextiende C:

class C {
    public C(){    
        System.out.println("C constructor");
    }
}

class B extends C{
    public B() {
        System.out.println("B constructor");
    }

}
class A extends B{
    public A() {
        System.out.println("A constructor");
    }
}


public class Test {
    public static void main(String[] args) {
        new A();
    }
}

Compile estas clases y luego ejecute la Testclase que crea una Ainstancia en su main()método especificando el -verboseindicador (habilite de forma predeterminada los registros de clases) en el javacomando:

java -verbose Test

Y debería ver en el estándar de salida algo como:

[Cargado java.lang.Object de C: \ ...]
[Cargado java.io.Serializable desde C: \ ...]
... // cargar todas las clases requeridas hasta cargar las clases C, B y A
[Cargado C del archivo: / C: / ...]
[Cargado B del archivo: / C: / ...]
[Cargado A del archivo: / C: / ...]
Constructor C
Constructor B
Un constructor

Confirma que:

  • las clases primarias deben cargarse primero comenzando por la clase primaria raíz ( Object) hasta la clase primaria más cercana ( B).
  • no se ejecuta ningún constructor antes de cargar todas las clases de la jerarquía
  • los constructores de las clases padre siempre se ejecutan antes que el constructor de la clase instanciada comenzando por el constructor padre raíz ( Object) hasta el constructor padre más cercano ( B).
Respuesta: 2

Se llama al constructor, por lo tanto, se crea un objeto de la clase padre. Ese objeto se usa más tarde para construir un objeto de la clase secundaria. La razón de esto es que un objeto de la clase secundaria es un objeto de la clase primaria con más cosas.

Respuesta: 3

Como la clase secundaria hereda propiedades y métodos de la clase primaria, se carga toda la jerarquía de clases (incluidas las superclases y las interfaces implementadas) .

Cuando crea una instancia de childclass, solo se crea un objeto único de tipo childclass (instanciado). No hay instancias adicionales de ninguno de los padres.

Se puede acceder a las propiedades y métodos declarados en las clases primarias a través de la instancia de childclass, y debido a esta herencia, la instancia de childclass se aceptará como argumento para cualquier método que espere una instancia del padre (o cualquier interfaz que implemente o cualquier padre implemente).

Si piensa en el código como un diseño contractual , esto tiene mucho sentido:

  • La declaración de la clase principal establece que ciertos métodos están disponibles para recurrir a sí mismo o a cualquiera de sus elementos secundarios. Lo mismo es cierto para las interfaces.
    Por ejemplo , todos los contratos de trabajo en el mundo real deben contener ciertas cláusulas, pero el resto depende de la empresa.
  • Al heredar ( extendso implements) se garantiza que el niño también proporcionará automáticamente los mismos métodos.
    Por ejemplo , podemos suponer que cualquier compañía respetuosa de la ley proporcionará contratos de trabajo, incluidas esas cláusulas y (una vez acordado) la firma de usted y la compañía.
  • Es necesario cargar toda la jerarquía para comprender el contrato completo.
    Por ejemplo , si hay una disputa, los abogados que examinen un contrato verificarán lo que prescribe la ley, quizás observando un contrato de muestra proporcionado por el cuerpo legislativo. ParentClass es esa muestra en el problema.
  • Solo necesitamos una instancia de objeto.
    Por ejemplo , no obtendrá dos contratos de trabajo, uno para lo básico y otro con más información. Recibirá y firmará un solo documento.
  • Finalmente, en mi análogo, cualquier contrato de trabajo (sin importar cómo esté redactado) será aceptable para cualquier agencia que le pida que pruebe su relación con la empresa que lo emplea (suponiendo que sea legal y válido al contener las cláusulas legalmente prescritas y firmas apropiadas).
Respuesta: 4

Hemos recibido código Java de un proveedor de software. Contiene muchos bloques try-catch sin nada en la parte catch. Están por todo el lugar. Ejemplo: prueba {spaceBlock ....

Soy un novato en Spring, comencé a desarrollar una aplicación para cargar archivos, utilicé la documentación oficial de Spring pero tengo este error: el procesamiento del controlador falló; La excepción anidada es java.lang ....

Estoy tratando de actualizar la base de datos una vez que he cambiado RichTextBox y he salido de RichTextBox (es decir, no quiero obligar al usuario a presionar un "botón Actualizar"). Sin embargo, mi código arroja el ...

No se puede hacer clic en los elementos de mi vista de lista. He intentado obtener foco actual () y bloquear descendientes en la etiqueta RelativeLayout en content_palce.xml. Todo lo que quiero de la lista son dos funciones: cuando hago clic en ...