tipos parametros herencia ejercicios destructores constructores java constructor default-constructor

parametros - Diferencia entre un constructor sin argumentos y un constructor predeterminado en Java



this en java (5)

¿Qué es un constructor por defecto?

Es un constructor que agrega el compilador si no ha definido un constructor.

Si su clase ya tiene un constructor, el compilador no agregará el constructor predeterminado.

Así que en tu caso tienes el constructor,

public Test(){ super(); this.setSize(200,200); this.setVisible(true); }

Por lo tanto, no hay un constructor predeterminado que invoque la JVM.

En realidad no puedo entender que es la diferencia entre un constructor sin argumentos y un constructor predeterminado.

import javax.swing.*; public class Test extends JFrame { public Test() { super(); this.setSize(200,200); this.setVisible(true); } public static void main(Sting[] arg) { Test cFrame = new Test(); } }

¿Invoca esto al constructor predeterminado de esta clase al crear un objeto de prueba llamado cFrame?


El constructor default es un constructor sin argumentos que el compilador de Java inserta en su nombre; contiene una llamada default a super(); (no supper() ) que es el comportamiento predeterminado. Si implementa cualquier constructor, ya no recibirá un constructor predeterminado.

JLS-8.8.9. El constructor predeterminado dice (en parte),

Si una clase no contiene declaraciones de constructor, se declara implícitamente un constructor predeterminado sin parámetros formales y sin cláusula de lanzamiento.

Si la clase que se está declarando es la clase primordial Object, entonces el constructor predeterminado tiene un cuerpo vacío. De lo contrario, el constructor predeterminado simplemente invoca al constructor de la superclase sin argumentos.


La respuesta a su pregunta es No. Java no proporcionará un constructor predeterminado si escribe cualquier tipo de constructor en clase.

Una diferencia entre ellos es que el cuerpo del constructor predeterminado siempre estará vacío, mientras que podemos insertar nuestro propio código en el constructor sin argumentos.


La respuesta es No. La variable de referencia cFrame llamará al constructor no arg Prueba (), no al constructor predeterminado. Mientras que el constructor Test () buscará y llamará al constructor no arg de la clase JFrame (principal) y así sucesivamente. Cada clase debe tener al menos un constructor. Si no se declara explícitamente, el compilador java proporciona un constructor no parametrizado, es decir, un constructor predeterminado. Este constructor predeterminado llama al constructor no parametrizado de su clase primaria Inicializa las variables de clase a sus valores predeterminados.

P.ej:

Class Base {} Class Derived extends Base {} // Default constructor of class "Derived" will automatically calls non-arg constructor of class "Base" and intialzes value to the variables

Mientras que el constructor no arg es definido solo por un programador. También puede inicializar las variables. Un punto más para agregar aquí es que el compilador Java agrega automáticamente la llamada super (), si no encuentra super () en la clase derivada.

P.ej:

Class Base { int y; public Base() { } public int getY() { return y; } } public class Derived extends Base { private int x; public Derived() { //super() will be automatically used } public int getX() { return x; } public void setX(int x) { this.x = x; } } Derived d = new Derived(); System.out.println("Base x value => " + d.getX()); System.out.println("Base y value => " + d.getY()); Result: Base x value => 0 // Default value to its primitive datatype(In this case: int) Base y value => 0


el default constructor es un constructor que el compilador de Java agrega a su código si no hay un constructor explícito disponible. El constructor predeterminado invoca al constructor de la superclase sin argumentos.

Si ha agregado su propio constructor (sin importar si es sin parámetros o con parámetros), el compilador no agregará el constructor predeterminado en este caso.