Construtores [RESOLVIDO]

Por gentileza alguém poderia me ajudar:

Tenho um exercício e estou com dúvidas:

A classe abaixo é parecida com a classe do exercício anterior, porém agora ela possui um construtor
alternativo. O que irá acontecer se em outra classe você desejar criar um objeto da mesma com a seguinte
instrução:
Garrafa gar = new Garrafa();

public class Garrafa{
private String tipo;
public Garrafa (String tipo){
this.tipo = tipo;
}
public void setTipo (String tipo){
this.tipo = tipo;
}
public String getTipo(){
return tipo;
}
}

Respostas: 1) O objeto gar será armazenado em outro espaço na memória, pois estamos utilizando o construtor padrão da classe Garrafa.
2) Não irá rodar pois a classe Garrafa possui um construtor com o parâmetro “tipo” e a instrução Garrafa gar = new Garrafa(); não tem parâmetro.

Por favor alguém poderia me responder se uma das duas respostas então corretas ou se preciso analisar novamente.
Obrigada!

Bem quando você não cria nenhum construtor ele cria automaticamente para você um construtor sem parâmetro.
No caso ao você criar algum construtor ele não criará mais nenhum construtor, então ele não criará sua classe e derá InstantiationException.
Para que você possa novamente criar esse objeto será necessário que você crie um construtor vazio.
Espero ter ajudado.

A resposta certa á a (2), pois como contrutor que esta na sua classe garrafa, impede que ele seja iniciado sem os parametros que esta pedindo, o correta seria,

Garrafa gar = new Garraga("Pet");

Obs. Por favor ao colocar seu código coloque ele em tag code!!

Bom dia Jeh, seguinte meu amigo quando você for postar um código por favor coloque ele entre as tags [ code ][ /code ] para que ele fique formatado para que o pessoal possa ler seu codigo senão será impossivel ajuda-lo com codigos muito extensos, referente a sua duvida a classe não iria compilar pois você sobreescreceu o construtor default da classe que por padrão é vazio e o substituiu por um construtor que recebe um parametro, por tanto quando você for instanciar um objeto do tipo garrafa você será obrigado a passar um parametro com o tipo de garrafa!

a resposta certa seria a 2!!!

Respostas: 1) O objeto gar será armazenado em outro espaço na memória, pois estamos utilizando o construtor padrão da classe Garrafa.

1 - Dica

  • O Java ja cria um construtor padrão , mas caso voce declare um construtor explicito voce esta dizendo para o seu sistema, eu quero falar com quais valores minhas variaveis vao ser iniciadas ex… uma variavel String é iniciada com null mas vamo supor que na sua aplicação voce quer que a variavel

[code]private String telefone ;

//inicie com :

“(xx) XXXX-XXXX”
[/code]

para isso voce cria o costrutor e passa como parametro o valor que voce quer iniciar suas variaveis

[quote=RafaelCassau]Bom dia mauricionarcizo, seguinte meu amigo quando você for postar um código por favor coloque ele entre as tags [ code ][ /code ] para que ele fique formatado para que o pessoal possa ler seu codigo senão será impossivel ajuda-lo com codigos muito extensos, referente a sua duvida a classe não iria compilar pois você sobreescreceu o construtor default da classe que por padrão é vazio e o substituiu por um construtor que recebe um parametro, por tanto quando você for instanciar um objeto do tipo garrafa você será obrigado a passar um parametro com o tipo de garrafa!

a resposta certa seria a 2!!![/quote]

Rafael, você ja bebeu a esta hora da manha??? Porque esta falando pra mim isso, olha direito e escreve para a pessoa certa cara que é para “Jeh”

[quote=mausexdd]Respostas: 1) O objeto gar será armazenado em outro espaço na memória, pois estamos utilizando o construtor padrão da classe Garrafa.

1 - Dica

  • O Java ja cria um construtor padrão , mas caso voce declare um construtor explicito voce esta dizendo para o seu sistema, eu quero falar com quais valores minhas variaveis vao ser iniciadas ex… uma variavel String é iniciada com null mas vamo supor que na sua aplicação voce quer que a variavel

[code]private String telefone ;

//inicie com :

“(xx) XXXX-XXXX”
[/code]

para isso voce cria o costrutor e passa como parametro o valor que voce quer iniciar suas variaveis[/quote]

Camarada, a resposta é a 2.
Caso a classe possua um construtor explícito, a JVM não irá criar o default que é o construtor sem argumentos.
A não ser que você crie mais de um construtor, modificando as assinaturas (parâmetros que serão recebidos), você terá que criar uma instância de objeto chamando o construtor existente, respeitando o tipo de variável que ele recebe como parâmetro, de nenhuma a quantas forem.

foi mau mauricionarcizo, foi falta de atenção minha, o post ja foi editado!!!
t+

[quote=otaviojava]Bem quando você não cria nenhum construtor ele cria automaticamente para você um construtor sem parâmetro.
No caso ao você criar algum construtor ele não criará mais nenhum construtor, então ele não criará sua classe e derá InstantiationException.
Para que você possa novamente criar esse objeto será necessário que você crie um construtor vazio.
Espero ter ajudado.
[/quote]
Expliquei, mas esqueci de falar a resposta que é a 2.

[quote=RafaelCassau]foi mau mauricionarcizo, foi falta de atenção minha, o post ja foi editado!!!
t+[/quote]
Ok, Rafael, abração!

Jeh caso seu problema tenha sido resolvido por favor edite o tópico para [RESOLVIDO], abraços!!!

[quote=Jeh]Por gentileza alguém poderia me ajudar:

Tenho um exercício e estou com dúvidas:

A classe abaixo é parecida com a classe do exercício anterior, porém agora ela possui um construtor
alternativo. O que irá acontecer se em outra classe você desejar criar um objeto da mesma com a seguinte
instrução:
Garrafa gar = new Garrafa();

public class Garrafa{
private String tipo;
public Garrafa (String tipo){
this.tipo = tipo;
}
public void setTipo (String tipo){
this.tipo = tipo;
}
public String getTipo(){
return tipo;
}
}

Respostas: 1) O objeto gar será armazenado em outro espaço na memória, pois estamos utilizando o construtor padrão da classe Garrafa.
2) Não irá rodar pois a classe Garrafa possui um construtor com o parâmetro “tipo” e a instrução Garrafa gar = new Garrafa(); não tem parâmetro.

Por favor alguém poderia me responder se uma das duas respostas então corretas ou se preciso analisar novamente.
Obrigada![/quote]

Pessoal,
Boa Noite!

Muito obrigada pela ajuda, consegui tirar minha dúvida. Os próximos posts irei colocar os códigos entre tags.
Valeu pelas dicas.

Abraços.