Boa Tarde;
Estou com dúvida para endender o funcionamento de multiplas classes,
Fiz uma classe com apenas um método para imprimir um nome, conforme abaixo:
public class teste11 {
public void imprimeNome (String nome){
System.out.println("Ola " +nome);
}
}
Declarei uma String chamada “nome”
Depois coloquei um out para imprimir uma mensagem e mais o que eu colocar na String “nome”.
Depois disso criei mais um classe com o main :
[code]import java.util.Scanner;
public class teste11b {
public static void main (String args[]){
Scanner teclado = new Scanner(System.in);
teste11 imprime = new teste11(); // Objeto para executar o método imprimeNome da classe teste11
System.out.print("Digite o seu nome: ");
String nome2 = teclado.nextLine(); // variável com nome diferente da que foi declarada na Class teste11
imprime.imprimeNome(nome2);
}
}[/code]
Aqui o usuário colocaria no nome dele que seria atribuido a a String “nome2”
Depois criei um objeto com o nome de “imprime” e fiz ele executar o método “imprimenome” que está na classe “teste11”.
Na classe “teste11” declarei uma String chamada “nome”
Na classe “teste11b” coloquei o imput do usuário em uma String chamada “nome2”
Minha dúvida é:
Porque quando eu rodo o main ele imprime tudo que está na classe teste11 mesmo que as variáreis estejam com nome diferente?
Não deria apontar tudo para a String nome que está na Classe teste11?
Obrigado;
Porque você passou a variável nome2 para o método imprimeNome(String). Quando você passa um parâmetro, é a mesma coisa que você fazer com que o valor da variável do escopo do método (aquele que está na assinatura do método, no caso, “nome”) ter o mesmo valor da variável que você passou como parâmetro.
Não entendi essa pergunta.
Obs: Nome de classe sempre deve começar com maiúsculo.
Porque você passou a variável nome2 para o método imprimeNome(String). Quando você passa um parâmetro, é a mesma coisa que você fazer com que o valor da variável do escopo do método (aquele que está na assinatura do método, no caso, “nome”) ter o mesmo valor da variável que você passou como parâmetro. [/quote]
Está começando a ficar claro, então eu passo o valor da variável que está no main para variável que está no método, isso?
Não entendi essa pergunta.[/quote][/quote]
Eu pensei que eu deveria fazer referência sempre para variável que eu tinha declarado no método, mas pelo que eu entendi eu posso declarar uma nova variável no main pois quando faço o objeto executar o método e passo esta nova variável para ser atribuida na variável da outra classe.
Opa, Obrigado pela Dica =)
Para a variável que está na assinatura do método, sim.
Por exemplo:
public class Classe {
public static void main(String args[]) {
Scanner teclado = new Scanner(System.in);
System.out.print("Digite o seu nome: ");
String nome = teclado.nextLine(); // variável com nome diferente da que
// foi declarada na Class teste11
System.out.println("Digite sua idade: ");
int idade = teclado.nextInt();
new OutraClasse().escreverNome(nome, idade);
}
}
class OutraClasse {
public void escreverNome(String nomeDoSujeito, int idadeDoSujeito) {
System.out.println(nomeDoSujeito + " tem " + idadeDoSujeito + " anos.");
}
}
Se ele escrever Joao e 20 seria exatamente o mesmo que:
public class Classe {
public static void main(String args[]) {
Scanner teclado = new Scanner(System.in);
System.out.print("Digite o seu nome: ");
String nome = teclado.nextLine(); // variável com nome diferente da que
// foi declarada na Class teste11
System.out.println("Digite sua idade: ");
int idade = teclado.nextInt();
new OutraClasse().escreverNome();
}
}
class OutraClasse {
public void escreverNome() {
String nomeDoSujeito = "Joao";
int idadeDoSujeito = 20;
System.out.println(nomeDoSujeito + " tem " + idadeDoSujeito + " anos.");
}
}
Eu entendi, ele aloca o nome colocado na varíavel do main para variável string da OutraClasse e o mesmo para variável int.
1- Mas e se eu tiver duas variáveis String no meu método, como o main vai alocar ? Na ordem, o que foi difitado primeiro e depois o outro?
2- No seu primeir exemplo onde está o Objeto para executar o método da OutraClasse?
[quote=juliobianco]Eu entendi, ele aloca o nome colocado na varíavel do main para variável string da OutraClasse e o mesmo para variável int.
1- Mas e se eu tiver duas variáveis String no meu método, como o main vai alocar ? Na ordem, o que foi difitado primeiro e depois o outro?
[/quote]
Na hora que você chamou o método, a variável que você botou entre parenteses é que vai para o metódo.
[quote=juliobianco]
2- No seu primeir exemplo onde está o Objeto para executar o método da OutraClasse? [/quote]
Ele está lá, o objeto é o “new OutraClasse()”. Se fosse algo como:
OutraClasse¹ variavel² = new OutraClasse()³;
¹O tipo da variável
²O nome da variável
³O metodo construtor, ele cria um objeto na memória e o retorna (no caso, um objeto do tipo OutraClasse).
Da forma que eu fiz ali, eu invoquei o método diretamente logo após a criação.
Entendi!
Muito Obrigado pela ótima explicação e paciência!
Julio Bianco