Quais construtores sao obrigatórios na classe base?

10 respostas
wbsouza

Quais são os construtores que devem ser obrigatoriamente implementados na classe base, e porque ?

public class Test extends Base {
    public Test(int j) {
        
    }    
    public Test(int j, int k) {
        super(j, k);
    }
}

[]s, Welington B. Souza

10 Respostas

caiofilipini

O construtor default, pois no construtor Test(int j) não há nenhuma chamada explícita ao construtor da classe Base, logo, o compilador chama automaticamente o default. O construtor Base(int, int) também é necessário, pois é chamado por Test(int j, int k).

É isso?!
[]'s

wbsouza

correto

M

"

rafaelsantos1983

caiofilipini:
O construtor default, pois no construtor Test(int j) não há nenhuma chamada explícita ao construtor da classe Base, logo, o compilador chama automaticamente o default. O construtor Base(int, int) também é necessário, pois é chamado por Test(int j, int k).

É isso?!
[]'s

Exatamente como caiofilipini disse.

Respondendo a dúvida de marcosalex. O contrutor é Obrigatório, pq no 2º construtor da classe Test chama o super da classe Base, só que ele está chamando um contrutor em Base com dois argumentos, que nesse caso não existe.

Ou você está perguntando genericamente?

M

"

rmendes08

Pq quando vc implementa o construtor com dois argumentos, o compilador descarta o construtor default. Pelo seguinte: uma classe tem um construtor default fornecida pelo compilador. Se você fornece qualquer construtor, esse construtor default é descartado. Se você quer que ele ainda funcione, você precisa fornecê-lo explicitamente, nem que seja public Classe(){}.

maior_abandonado

então cara… todo metodo construtor, sem exceção, irá chamar o construtor da classe pai…exceto o de object q não tem classe pai…

a primeira linha de um construtor sempre terá uma chamada a super, chamando o construtor da classe pai, caso o programador coloque essa chamada com ou sem parametros, será chamado o construtor pai da forma como ele escreveu.

se não for criada essa linha chamando o construtor pai, ao compilar, é adicionado um super() (sem argumentos mesmo, coloquei os parenteses de proposito)… e se a classe pai não tiver um construtor sem argumentos recebidos, o código da classe filha não compila a menso que o programador dela crie um construtor pra ela e chame nesse construtor, o construtor existente do pai da forma correta

maior_abandonado

então cara… todo metodo construtor, sem exceção, irá chamar o construtor da classe pai…exceto o de object q não tem classe pai…

a primeira linha de um construtor sempre terá uma chamada a super, chamando o construtor da classe pai, caso o programador coloque essa chamada com ou sem parametros, será chamado o construtor pai da forma como ele escreveu.

se não for criada essa linha chamando o construtor pai, ao compilar, é adicionado um super() (sem argumentos mesmo, coloquei os parenteses de proposito)… e se a classe pai não tiver um construtor sem argumentos recebidos, o código da classe filha não compila a menso que o programador dela crie um construtor pra ela e chame nesse construtor, o construtor existente do pai da forma correta

M

"

Marcio_Nogueira

O construtor possibilita instanciar a classe, ou seja, criar um objeto em memória (heap) desta classe. :wink:

Criado 15 de julho de 2003
Ultima resposta 22 de jan. de 2009
Respostas 10
Participantes 7