Tengo algunos casos que me pregunto. En primer lugar, si usted no tiene constructor:¿Qué sucede cuando las subclases no definen un constructor en Java?
class NoCons { int x; }
Cuando hago new NoCons()
, el constructor por defecto se llama. ¿Qué hace exactamente? ¿Establece x
en 0, o sucede eso en otro lugar?
Qué pasa si tengo esta situación:
class NoCons2 extends NoCons { int y; }
¿Qué sucede cuando llamo new NoCons2()
? ¿Se llama al constructor predeterminado de NoCons
y luego al constructor de NoCons2
? ¿Cada uno de ellos establece los campos respectivos x
y y
en 0?
¿Qué pasa con esta versión:
class Cons2 extends NoCons { int y; public Cons2() {} }
Ahora tiene un constructor, pero no llama al constructor de la superclase. ¿Cómo se inicializa alguna vez el x
? Lo que si tuviera esta situación:
class Cons { int x; public Cons() {} }
class NoCons2 extends Cons { int y; }
¿El constructor Cons
ser llamado?
Podría probar todos estos ejemplos, pero no puedo decir cuándo se ejecuta un constructor predeterminado. ¿Cuál es una forma general de pensar sobre esto para saber lo que sucede en situaciones futuras?