Duvida O.O

3 respostas
P

Boa noite,

Estou com a seguinte duvida:

É possivel ter um atributo na classe B e na classe main instanciar a classe A chamando esse atributo?

Eu sei que uma forma de se fazer isso é através dos metodos get/set e usar o “extends”, por exemplo ‘classe A extends B’. Dessa forma a classe A consegue ver todos os metodos publicos da classe B.

Só que tudo isso tem um porem, se eu instanciar a classe B e der um set no atributo por, exemplo, nivelCliente(5) e logo em seguida instanciar a classe A e der um System.outprintln("A = “+classeA.getNivelCliente()+” - B = "+classeB.getNivelCliente());

Irei ter o seguinte resultado na tela:

A = null - B = 5

Entenderam???

Eu gostaria de saber se tem como fazer para que o metodo getNivelCliente que a classe A enxerga na classe B retorne o mesmo valor do metodo getNivelCliente da classe B, ou seja:

ClasseB classeB = new ClasseB();
classeB.setNivelCliente(5);

System.outprintln(“Resutado:\n”+"A = “+classeA.getNivelCliente()+” - B = "+classeB.getNivelCliente());

Resultado:
A = 5 - B = 5

Alguem pode me ajudar?

3 Respostas

J

Transforme a variável de instância da classe B que é acessada pelos métodos setNivelCliente e getNivelCliente em uma variável estática (no exemplo seria a variável nivel) para que ela seja única para todas as instâncias, ou seja, passará a ser uma variável de classe.
Ex.:

public class B
{
	private static String nivel;
	
	public void setNivelCliente(String niv)
	{
		nivel=niv;
	}
	public String getNivelCliente()
	{
		return nivel;
	}
}
B

Ola,

O que vc pode fazer é, faça um construtor que recebe o valor da variável, e atualiza a sua, por exemplo:
pulbic class A{
  private int umInt;
  
  public void setUmInt(int umInt) { this.umInt = umInt;}
 
  public int getUmInt() { return this.umInt;}
}

public class B{
  private int outroInt;

  public B(int outroInt){ this.outroInt = outroInt;}
  
  public int getOutroInt(){ return this.outroInt;}
}

// e na main:
...  public static void main(...
  
  A a = new A();
  a.setUmInt(18);
 B b = new B(a.getUmInt());

 System.out.println("A = "+a.getUmInt()+" B = "+b.getOutroInt());
...
P

Perfeito Bruno!

Funcionou :slight_smile:

valeu!

Criado 12 de dezembro de 2006
Ultima resposta 12 de dez. de 2006
Respostas 3
Participantes 3