Codigo:
class A
{
A(double d){
System.out.println("Class A Constructor ");
}
}
public class B extends A{
B(){
System.out.println("Class B Constructor");
}
public static void main(String[] args){
B b = new B();
}
}
Isso nem compila…
Bom entao acho q to comecando a entender…
Se uma classe eh filha de outra entao quando ela eh construida ela chama os construtores do pai… E para isso deve ter algum construtor com a mesma lista de parametros (to falando dos tipos dos parametros)…
Eh isso? :?:
Exacto, é claro que voçê tem sempre a hipotese de chamar um constructor especifico usando a keyword super
por exemplo:
[code]
class A {
A(double d){
System.out.println("Class A Constructor ");
}
}
public class B extends A {
B() {
super(1.4d); // Chama o constructor A(double d) da classe base
System.out.println("Class B Constructor");
}
public static void main(String[] args) {
B b = new B();
}
} [/code]
Se voce nao cria construtor algum, o Java ira criar um sem argumentos para voce. Porem, a partir do momento em que voce cria um construtor - e levando em consideracao que este tenha algum parametro - o Java ja nao ira mais criar o construtor default, ficando a seu cargo tal tarefa.
Por isso que, mesmo que voce nao for usar um construtor sem parametros, porem deseja permitir que a classe seja estendida, crie um construtor vazio tambem, caso contrario as classes filhas deverao chamar explicitamente algum construtor com parametros da classe pai.
Rafael
Gente, vamos tentar organizar as pegadinhas.
Os posts estão saindo como “Pegadinha”,
“Outra pegadinha”, “Mais pegadinha”.
A próxima agora poderia ser “Pegadinha 4” ou
"Pegadinha 4 - construtores ".
Assim facilita a busca…