Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida como funciona o construtor

eu to em duvida exatamente o que é esse construtor, por exemplo

class nomeClasse{
          
          void metodo(){
             system.out.println(" só vai ser exibido se chamar o metodo assun nomeClasse.metodo(); ");
     }

    nomeClasse(){
            system.out.println(" vai ser exibido assim que executar a classe");
     }
}

eu tinha entendido que esse nomeClasse() { } dentro da classe nomeClasse era chamado de construtor, e é executado automaticamente assim que chamado a classe, porém, quando transforma a classe em objeto, nomeClasse o1 = new nomeClasse (); , esse new nomeClasse(); também é chamado de construtor, tem alguma realção para ambos se chamarem assim ?

também falaram que o construtor tem que ter o mesmo nome da classe, isso se aplica no primeiro codigo ? não iria gerar conflito ?

sinto muito se eu não conseguir explicar direito, é que nas aulas vi uns exemplos parecido e sendo dado esses nomes, ai não entendi direito o conceito de construtor nesses dois casos.

3 respostas

Olá

Entendo que você está com dúvidas sobre o conceito de construtor em Java. Vou tentar explicar de uma forma clara para você.

O construtor é um método especial que é chamado automaticamente quando você cria um objeto de uma classe. Ele é responsável por inicializar os atributos do objeto ou executar outras ações necessárias para que o objeto possa ser utilizado corretamente.

No seu exemplo, a classe nomeClasse possui um construtor sem parâmetros, que é chamado quando você utiliza a instrução new nomeClasse();. Esse construtor exibe uma mensagem assim que a classe é executada.

O construtor deve ter o mesmo nome da classe, para que o Java possa identificá-lo corretamente. No seu caso, o construtor nomeClasse() tem o mesmo nome da classe nomeClasse, então não há conflito.

É importante destacar que você pode ter vários construtores em uma classe, desde que eles tenham parâmetros diferentes. Isso é útil quando você precisa criar objetos de uma classe de diferentes maneiras, com diferentes configurações.

Por exemplo, você poderia ter um construtor na classe nomeClasse que recebe um parâmetro do tipo String para definir um nome para o objeto. Assim, você poderia criar um objeto passando um nome específico, como new nomeClasse("João");.

Espero ter esclarecido suas dúvidas sobre construtores em Java. Se tiver mais alguma pergunta, é só me dizer! Espero ter ajudado e bons estudos!

Ok, entao então no exemplo a seguir

class A{

int x;

   void metodo(){
             system.out.println(" só vai ser exibido se chamar o metodo assim nomeClasse.metodo(); ");
     }

    A(){
            system.out.println(" vai ser exibido assim que executar a classe");
     }

system.out.println(x);
}

Class B{

A a = new A();

a.x = 15;

system.out.println(a);

}

ele vai exibir a mensagem " vai ser exibido assim que executar a classe" ou essa mensagem e depois 15 ?

e se eu não tiver esse construtor dentro da minha class A, ele vai exibir nada ? assim:

class A{

int x;

   void metodo(){
             system.out.println(" só vai ser exibido se chamar o metodo assim nomeClasse.metodo(); ");
     }

system.out.println(x);
}

Class B{

A a = new A();

a.x = 15;

system.out.println(a);

}
solução!

No exemplo que você apresentou, a classe A possui um construtor sem parâmetros:

class A { int x;

A() {
    System.out.println("vai ser exibido assim que executar a classe");
}

void metodo() {
    System.out.println("só vai ser exibido se chamar o metodo assim nomeClasse.metodo();");
}

System.out.println(x);

} Ao criar um objeto da classe A na classe B:

class B { A a = new A(); a.x = 15; System.out.println(a); } A sequência de eventos será a seguinte:

A classe B será executada. Será criado um objeto da classe A através da instrução A a = new A();. A mensagem do construtor A() será exibida: "vai ser exibido assim que executar a classe". O valor da variável x do objeto a será alterado para 15: a.x = 15;. O objeto a será impresso, mas como você não definiu um método toString() na classe A, ele será impresso como um endereço de memória hexadecimal. Se você remover o construtor A(), a classe A ainda será executada, mas a mensagem "vai ser exibido assim que executar a classe" não será exibida, uma vez que essa mensagem é exibida apenas quando o construtor é chamado.

Lembrando que o construtor é chamado automaticamente ao criar um objeto da classe. Ele é usado para inicializar os atributos do objeto ou executar outras ações necessárias para que o objeto possa ser utilizado corretamente. Se você não definir um construtor na classe, o compilador irá fornecer um construtor padrão sem parâmetros automaticamente, que não executa nenhuma ação especial além de criar o objeto.