class Carro {
String nome;
int ano;
Carro (String pNome,int pAno) {
nome = pNome; ano = pAno;
}
Carro Fiat = new Carro(“Uno”,1994);
Carro ww = new Carro(“Fusca”,1970);
Carro Ford = new Carro (“Mustand”,1964);
Carro GM = new Carro (“Chevete”,1970);
}
Nesse exemplo eu tive que escrever a linha de criação de instância 4 vezes. Eu queria escrevê-la apenas uma vez e ter uma variável onde eu colocasse o nome das marcas.
Ex.: Carro NomeMarca = new Carro(NomeCarro,AnoCarro);
Ai eu não teria que escrever 4 vezes a linha de criação de instância.
NomeCarro e AnoCarro eu consigo passar por parâmetro tranquilamente, mas e o NomeMarca? Não dá, ele acha que o nome da instância é NomeMarca literalmente e não o valor da variável NomeMarca.
Deu para entender o que eu quero?
Como resolver isso?
Basta colocar a variável como parâmetro no construtor.
String nomeDoJogo = "Dota";
Jogo jogo = new Jogo(nomeDoJogo);
Mas no seu exemplo você está criando uma instância chamada “jogo”.
Isso não é possível. O nome da instância não deveria ser passada.
Pois na verdade, podemos ter vários nomes para o mesmo objeto, rode esse código para ver isso:
public class Teste {
public static void main (String[] args) {
TesteClasse teste1 = new TesteClasse("teste1 - esse aqui é o conteúdo da classe");
TesteClasse teste2 = teste1;
System.out.println(teste1.getConteudo());
System.out.println(teste2.getConteudo());
System.out.println(teste1.toString()); // Printa o endereço de memória do objeto
System.out.println(teste2.toString()); // Se esse for igual, significa que é o mesmo objeto.
}
static class TesteClasse {
private final String conteudo;
public TesteClasse(String conteudo) {
this.conteudo = conteudo;
}
public String getConteudo() {
return conteudo;
}
}
}