Construtores()

7 respostas
L

Olá,

Tenho uma dúvida sobre construtores, dêem uma olhada no código abaixo.

public class TesteConstrutores {
	public void TesteConstrutores() {
		System.out.println("Executando o construtor...");
	}
	public static void main(String[] args) {
		System.out.println("Executando main...");
		TesteConstrutores tc = new TesteConstrutores();
		System.out.println("Finalizando main...");
	}
	
}

Bom, a saida deste programa foi
Executando main…
Finalizando main…
ou seja, o construtor nem foi chamado… um livro que estou lendo diz que o construtor é chamado antes do main() … porém neste caso não foi, e nem mesmo quando eu instanciei o objeto.

O construtor é chamado antes do método main(), no momento que executo main() ou quando instancio o objeto?

7 Respostas

Adriano_Almeida

Tira o void do seu construtor.

peczenyj

isto ‘public void TesteConstrutores()’ não é um construtor, é um metodo.

um construtor não possui tipo de retorno

declare como ‘public TesteConstrutores()’ e veja vc mesmo

ou então faça:

System.out.println("Executando main..."); TesteConstrutores tc = new TesteConstrutores(); tc.TesteConstrutores(); System.out.println("Finalizando main...");

Bravox

Construtores não possui retorno portanto o metódo que está na sua classe não é um construtor além de que os construtor(s) de uma classe são utilizados para instânciar um classe ou seja para criar objetos da classe e não par realizar tarefas que no caso são desiguinadas para os metódos da classe e toda classe em java por default possui um construtor mesmo não sendo declarado nela e no seu codigo vc está chamando o construtor quando vc executa da seguinte linha

TesteConstrutores tc = new TesteConstrutores();

neste caso vc está chamando o construtor default da classe já que nela não existe algum construtor declarado !!

qualquer duvida posta ai

bravox

T

Quando James Gosling copiou várias coisas do C++ para criar o Java, esqueceu-se de copiar uma coisa: em C++ não é possível ter um método que tem o mesmo nome de um construtor.
O equivalente disto:

public class TesteConstrutores {
 	public void TesteConstrutores() {

que seria isto em C++:

class TesteConstrutores {
public:
    void TesteConstrutores() {

simplesmente não compila em C++.

cv1

Sempre achei que tinham copiado essa. :?

LPJava

os contrtuores eles nao tem retorno… e vc definiu seu construtor como void… e isso eh um metodo e nao um contrutor sendo q void retorna para nada.

public nome da classe() {}
L

blz galera, valeu ae!!!
O que estava errado era realmente o tipo de retorno…

A saída do programa foi:
Executando main…
Executando o construtor…
Finalizando main…

Ou seja, o construtor é chamado quando crio uma instancia do da classe e não quando main é chamado como diz no meu livro :frowning:

Vlw

Criado 22 de setembro de 2006
Ultima resposta 22 de set. de 2006
Respostas 7
Participantes 7