Alguien me puede explicar para que sirve poner super() en una función? He mirado un montón de sitios donde lo explican y no acabo de entender para que es, pero dicen que es bastante importante utilizarlo.
Pero sin super haría lo mismo no? Si extiendes la clase B a la clase A igualmente llamas al constructor de la clase A y a todas sus variables sin necesidad de super no?
Sirve para llamar a cualquier método de la clase superior, por ejemplo para hacer sobrecargas.
ygriega escribió:Pero sin super haría lo mismo no? Si extiendes la clase B a la clase A igualmente llamas al constructor de la clase A y a todas sus variables sin necesidad de super no?
Si existe un constructor para la clase superior sin parámetros, que Java te lo genera automáticamente, se inicializarán sus variables con valores por defecto. En cuanto definas tú un constructor te va a dar un error si no llamas a super(con los parámetros que sean).
Gracias por las respuestas, tendré que ir experimentando con los ejemplos que habéis puesto para acabar de entenderlo del todo, a lo mejor es que por mi manera de programar no he necesitado nunca utilizar esa función
amchacon
Revolinuxnario
18.354 mensajes desde nov 2008 en /kernel/fork.c:330
Editado 1 vez. Última: 18/01/2015 - 18:45:30 por amchacon.
ygriega escribió:Pero sin super haría lo mismo no? Si extiendes la clase B a la clase A igualmente llamas al constructor de la clase A y a todas sus variables sin necesidad de super no?
Si existe un constructor para la clase superior sin parámetros, que Java te lo genera automáticamente, se inicializarán sus variables con valores por defecto. En cuanto definas tú un constructor te va a dar un error si no llamas a super(con los parámetros que sean).
Solo te lo genera si no hay otros constructores, sino no.
Class A { A(int a) { System.out.println("Construido: " + a); } }
//...
A objeto = new A(); // Error de compilación
Importante ese detalle.
ygriega escribió:Pero sin super haría lo mismo no? Si extiendes la clase B a la clase A igualmente llamas al constructor de la clase A y a todas sus variables sin necesidad de super no?
Pues si, tendría sentido si fueras a llamar a un constructor con parámetros.