estou com algumas duvidas.
estou querendo acessar atributo criado em uma classe em outra classe.
exemplo:
classe1
public int x = 1;
if(x ==1){
x++;
}//x =2
na classe 2 quero acessar esse atributo com o valor 2 e manipular ele fazer um calculo.
eu to fazendo assim ta funcionando mais queria saber se é o certo fazer desse modo.
exemplo: classe2
c.x;
private classe1 c;
//ai na classe1 só
//coloquei o static no atributo
public static int x = 1;
c.x;
//-----------------------------------------------------------------------------------------------------------
Vou te mostrar como eu acesso, também nao sei dizer se é o melhor, mas sempre me disseram que estava certo.
//-----------------------------------------------------------------------------------------------------------
class NomeA{
private int valor;
private String palavra;
NomeA(){
valor == 0;
palavra == null;
}
//Usado para enviar um valor para dentro desta classe
public void setValor(int novo_valor){
valor = novovalor;
}
public void setString(String nova_palavra){
palavra = nova_palavra;
}
//Usado para retirar um valor desta classe
public int getValor(){
return(valor);
}
public String getString(){
return(palavra);
}
//metodos
public int soma(int x){
return(x+valor);
}
public int tamanho(){
return(palavra.length());
}
//Aqui, vc pode
//criar inumeros
//metodos
}
//-----------------------------------------------------------------------------------------------------------
Como acessa-la
//-----------------------------------------------------------------------------------------------------------
class Teste{
public static void main(String args[]){
//declarando e instanciando uma variavel da classe NomeA aqui, para que eu possa trabalhar com esta
NomeA variavel = new NomeA();// classe
//enviando valores para a classe
variavel.setValor(10);
variavel.setString("Teste");
//recebendo valor desta classe
int retvalor = variavel.getValor();
String retpalavra = variavel.getString();
//Usando os metodos
int tam = variavel.tamanho();
int num = 12;
int s = variavel.soma(num);
//Mostrar valores
System.out.println("Valores originais das variaveis\n VALOR = "+retvalor+" - Palavra = "+retpalavra);
System.out.println("Usando os Metodos\n tamanho da palavra = "+tam+" - Soma de"+retvalor+" com "+num+" = "+s);
}
}
Quando eu uso varivel.(ponto) --> O (ponto, busca tudo da classe NomeA–> Metodos, nome de variveis, (tudo que seja acessivel))
Boa Tarde.
Obrigado pela ajuda!
mais to tentando fazer esse procedimento para um atributo que eu criei mais não está funcionando.
poderia me ajudar ve o que eu to fazendo de errado…
to inicializando um atributo com valor true, e quero alterar esse valor para false,mais alteração é em outra classe mais não posso utilizar o static para essa situação,por alguns motivos.
exemplo.
classe1
private boolean continuar = true;
public boolean getContinuar() {
return continuar;
}
public void setContinuar(boolean continuar) {
this.continuar = continuar;
}
classe2
classe1 c = new classe1(){
c.setContinuar(false); //quero enviar esse valor false para a classe1
O objeto referenciado pela variável c tem o valor de continuar igual à false.
Se você imprimir c.continuar, ou utilizar o getter dele pra obter o valor, vai perceber que o atributo continuar desta instância, e exclusivamente desta, tem o valor false.
Um atributo não-estático diz respeito à cada referência daquele objeto. Um atributo estático(static) faz referência à classe.
[quote=cleber_zeh]então a unica forma de alterar o valor do atributo criado naquela classe é usando o static?/quote]
se algém souber uma apostila de POO, por favor me passa .
cleber, nessa situação ai você está mudando o valor do atributo continuar do OBJETO “c” que vc criou!
caso vc criasse o objeto “c2” e desse um c2.getContinuar, o continuar de c2 seria true… MAS o Continuar de c(o que você modificou!) vai ser FALSE!
Experimente fazer isto:
[code]
public class Classe1 {
private boolean continuar = true;
public boolean getContinuar() {
return continuar;
}
public void setContinuar(boolean continuar) {
this.continuar = continuar;
}
}[/code]
[code]
public class Classe2 {
public static void main(String[] args) {
Classe1 c = new Classe1();
Classe1 c2 = new Classe1();
O que foi impresso e porque?
agora dá uma olhada nisso:
[code]
public class Classe1 {
private static boolean continuar = true;
public static boolean getContinuar() {
return continuar;
}
public static void setContinuar(boolean continuar) {
this.continuar = continuar;
}
}[/code]
public class Classe2 {
public static void main(String[] args) {
Classe1 c = new Classe1();
Classe1 c2 = new Classe1();
Classe1 c3 = new Classe1();
Classe1 c4 = new Classe1();
Classe1 c5 = new Classe1();
c.setContinuar(false);
System.out.println(c.getContinuar());
System.out.println(c2.getContinuar());
System.out.println(c3.getContinuar());
System.out.println(c4.getContinuar());
System.out.println(c5.getContinuar());
c5.setContinuar(true);
System.out.println(c.getContinuar());
System.out.println(c2.getContinuar());
System.out.println(c3.getContinuar());
System.out.println(c4.getContinuar());
System.out.println(c5.getContinuar());
Classe1.setContinuar(false);
System.out.println(c.getContinuar());
System.out.println(c2.getContinuar());
System.out.println(c3.getContinuar());
System.out.println(c4.getContinuar());
System.out.println(c5.getContinuar());
c3.setContinuar(true);
System.out.println(c.getContinuar());
System.out.println(c2.getContinuar());
System.out.println(c3.getContinuar());
System.out.println(c4.getContinuar());
System.out.println(c5.getContinuar());
}
}
deu pra entender? vc declara static quando quiser q todos os objetos compartilhem o mesmo valor no atributo, e quando não for static, cada objeto tera seu proprio valor para o atributo. Mas não se esqueça de que um atributo static é um atributo da CLASSE, e um atributo não-static é um atributo de OBJETO!
certo eu entendi,só que eu quero alterar o valor do continuar da classe1 para false quando ocorre uma situação na classe2.e isso não ta funcionando ele não muda,depois que eu peguei o valor
tem como enviar o valor desse objeto da classe para um atributo da classe1?
public class Classe2 {
public static void main(String[] args) {
Classe1 c = new Classe1(); ///enviar o valor false para o atributo continuar da classe1
c.setContinuar(false);
public class Classe2 {
private Classe1 n ;
public void setClasse1(Classe1 n2){
n = n2;
}
public void mata(){
Classe1 n = new Classe1 ();
n.setContinuar(false);
}
}
public class Classe1{
private boolean continuar = true;
while (continuar) {
continuar = getContinuar();//aqui queria pegar o valor false e armazenar no continuar para //parar a execução de um objeto do programa.
diga(continuar); //o metodo main ta em outra classe.
public boolean getContinuar() {
return continuar;
}
public void setContinuar(boolean continuar) {
this.continuar = continuar;
}
}
[code] public class Classe1
{
private boolean continuar = true;
public Classe1 ( boolean variavel) // Esse é o construtor da Classe1
{
continuar = variavel; // Aqui eu passo o valor recebido por parametros para a variavel continuar
}
public void mensagem()
{
System.out.println("O Valor mudou para " + continuar);
}
}[/code]
[code] public class Classe2
{
public static void main(String[] args)
{
Classe1 variavel1 = new Classe1(false); //aqui eu passo o valor false para o construtor
variavel1.mensagem();
}
}[/code]
Nesse caso ai, eu passei o valor “false” para a variavel continuar pelo construtor…
ta mais no meu caso o MAIN ta na classe1,
então esse valor tem que ser enviado pra ela.
isso que eu quero fazer e não to conseguindo.
alguma dica?
obrigado
[quote=cleber_zeh]ta mais no meu caso o MAIN ta na classe1,
então esse valor tem que ser enviado pra ela.
isso que eu quero fazer e não to conseguindo.
alguma dica?
obrigado[/quote]
}
public boolean getContinuar() {
return continuar;
}
public void setContinuar(boolean continuar) {
this.continuar = continuar;
}
public static void main(String[] args){
Executando();
}
}
public class classe2
public void matar{
if (ACERTOU(“Classe1”, AQUI) == true) {//isso é um exemplo,quando ocorre tal situação ele recebe o valor false
classe1 n = new classe1();
n.setContinuar(false);
//agora quero enviar esse valor false para a classe1 quero que o continuar receba o valor false e //não mais true,isso que eu quero fazer.
Primeiro você tem que entender o que é uma instância do objeto…
quando vc dá um new em uma classe você cria uma instância, um objeto na memória
Objeto obj = new Objeto();
ele só pode ser acessado e referênciado pela variável de referência que é o obj…
se vc estiver criando esse código em uma segunda classe, esse objeto só vai existir na memória enquanto a sua classe existir
public class ObjetoDois{
public static void main(String...argds){
Objeto obj = new Objeto();
}
}
Nesse código não existe esse negócio de você passar o valor para a outra classe, simplesmente por que essa classe só existe dentro do escopo do seu método que está na classe ObjetoDois
Agora você precisa saber como compartilhar atributos com todas as instâncias…
Quando precisa que um ou mais atributos tenham sempre o mesmo valor para todas suas instâncias você usa o static
//classe Um
public class Objeto{
protected static Boolean teste = false;
}
public class ObjetoDois{
public static void main(String...argds){
//vair sempre imprimir false para todas as instâncias
System.out.println(Objeto.teste);
}
}
Para você trocar informações entre objetos precisa que eles estejam no mesmo bloco de código e tenham suas instâncias independentes…
public class ObjetoTres{
public static void main(String...argds){
Objeto obj = new Objeto();
obj.setTeste(true);
ObjetoDois objDois = new ObjetoDois();
objDois.setTeste(obj.getTeste());
}
}