Método que cria um objeto , no caso, um cachorro. (Simples)

To aprendendo as bases da orientação á objetos e queria criar um método que criasse um cachorro com um nome definido pelo usuario
Código:

[code]package doglife;

class Dog {
int peso;
String nome;
int idade;

// 
//
//   Dá um erro , tal, (nome is alrealdy defined in newDog(java.lang.String)
void newDog (String nome) {   
Dog nome = new Dog();    
}


//
void late() {
System.out.println ("Ruff!");    
} 
}

class Cat {
int peso;
String nome;

void mia() {
System.out.println ("Miau!");  
}   
}

public class DogLife {
public static void main(String[] args) {
Dog cachorro = new Dog();
Cat gato = new Cat();

}

}[/code]

Espero ajuda,
Obrigado desde já.

[code] //
//
// Dá um erro , tal, (nome is alrealdy defined in newDog(java.lang.String)
void newDog (String nome) {
// Dog nome = new Dog();
Dog cahorro= new Dog(); //correto

} [/code]

nome voce esta recebendo por parametrô e é uma String, não pode utilizar nome para criar um Dog

Mais como eu faço pro usuario poder definir o nome do cachorro (objeto)

//   Dá um erro , tal, (nome is alrealdy defined in newDog(java.lang.String)     
  void newDog (String nome) {       
   //  Dog nome = new Dog();              
       Dog cahorro= new Dog();   //correto   
  
//Como fazer com que o usuario escolha o nome do objeto no caso "cachorro"?

  }

Tentei do seguinte modo, ta correto o pensamento?

package doglife;
    

    class Dog {
    int peso;
    String nome;
    int idade;
    
    void newDog (String nome) {   
    nome = "Cachorro"; // Seria estipulado pelo usuario...
    Dog cachorro = new Dog();
    cachorro.nome=nome ;
    }

Porém toda vez que eu chamar o método ele vai criar um objeto chamado cachorro,
eu queria que o aplicativo criasse por exemplo, cachorro1, da proxima vez que fosse chamado, criasse o objeto Dog, chamado cachorro2 e assim por diante

Diego,

Você deverá criar um Construtor com somente a propriedade nome para dar nome ao seu cachorro. Abaixo segue exemplo:

Class Dog {

private String nome;
private Integer idade;
private Double peso;

//Não Instancia nenhuma propriedade
public Dog(){}

//Instancia todas as propriedades
public Dog(String nome, Integer idade, Double peso){
this.nome = nome;
this.idade = idade;
this.peso = peso;
}

//Instancia somente a propriedade nome
public Dog(String nome){
this.nome = nome;
}

//Getters and Setters
}

E assim você poderá fazer para qualquer outra propriedade individualmente.

Espero ter ajudado.

Att. Agostinho Neto

[quote=Maicon Henrrique]Mais como eu faço pro usuario poder definir o nome do cachorro (objeto)

 class Dog {   
    int peso;   
    String nome;   
    int idade;   
    // Construtor de Dog
    public void Dog(int peso, String nome, int idade){
     this.peso = peso;
     this.nome = nome;
     this.idade = idade;
    }
    
  }


 class UsaDog{
  // De alguma forma vc captura o nome....
  String nomeDog = "kjasfhaksjfh";
  Dog dog = new Dog(0, nomeDog, 0);
 }

[/quote]

Qual seria o seu real objetivo ?
Creio que esteja bem confuso em relação a orientação a objetos.

Dá uma lida sobre encapsulamento e construtor, vai lhe ajudar.
Abraços.

Para entrada via console vc pode usar a classe Scanner.

Scanner var = new Scanner(System.in); System.out.println("Digite o nome do dog"); String nome = var.nextLine();

cria um objeto Scanner na primeira linha que aceita entrada via console.
mostra uma mensagem na segunda linha pedindo que digite um nome
Na terceira linha uma string recebe o valor que foi digitado pelo teclado

Aconselho que estude a apostila da caelum FJ11 para fixar bem os conceitos de orientação a objeto, entrada e saida são tratados bem mais adiante quando já se tem alguns aspectos dominados

A minha duvida simplesmente é essa
Eu quero que um método crie um objeto DOG, com o nome do Objeto ( Dog (nomeaqui) = new Dog(); ) estipulado pelo usuario
Simples assim

Vou estudar a apostila como o amigo encima citou, obrigado a todos que ajudaram, vou pesquisar sobre construtores e tudo mais.

Valeu!

Algo desse tipo, certo?

[code]private String nome;

public Dog(String nome){
this.nome = nome;
}
public metodoCriaDog(){
Scanner input = new Scanner(System.in)
System.out.println(“Digite o nome do dog”);
String nome = input .nextLine();
Dog d = new Dog(nome);
}[/code]

Issssssso!

Thanks!

Só para acrescentar, não é possivel o usuário determinar o nome da variavel, o que pode ser mudado de acordo com o que o ele informar são os atributos do objeto.

como no exemplo de vitor2908.

[quote=vitor2908] [code]
private String nome;

public Dog(String nome){  
         this.nome = nome;  
}  
public metodoCriaDog(){  
       Scanner input = new Scanner(System.in)  
       System.out.println("Digite o nome do dog");  
       String nome = input .nextLine();  
       Dog d = new Dog(nome);  
} [/code] [/quote]

O atributo nome do objeto Dog é alterado porém o nome da variável que é d contibuará sendo d, caso você queira saber qual o nome do chachorro que o usuário informou terá que fazer da seguinte forma

d.nome