Busca atributo em outra classe

Amigos,
tenho a seguinte situação,

class StaticAtributos {
    int a = 1;
}

class SemAtributo  extends StaticAtributos{
    int b = 2;
 }
 
  class Teste{
      public static void main(String[] args)
      {
          SemAtributo sa = new SemAtributo();
          sa.a;  // 1

//            StaticAtributos st = new StaticAtributos();
//            st.a; // 2
              
//              StaticAtributos sa = new StaticAtributos();
//              sa.a;  // 3
               
      }
 }

Quando tento acessar o atributo de qualquer classe como estou tentando fazer, nem compila !
O que ocorre ?

Eu não entendi o que vc quis dizer com 1, 2, 3…

em todo caso sempre que tiver uma dúvida com relaçao á alguma exceção poste tb o erro que foi gerado …fica mais fácil de te ajudar…

[/]'s

Ok,
concordo e desculpa,
quero dizer que tanto p/ 1, 2 ou 3 ocorre Erro, “Not expression statement”.
Obrigado.

tenta colocar um modificador de acesso.

por exe.:

class StaticAtributos {
public int a = 1;
}

até mais.

Se vc não esta trabalhando com pacotes ainda… também sugiro que vc declare suas classes como públicas e os membros também (varíaveis e métodos)…e não esqueça de salvar tudo dentro da mesma pasta.


public class StaticAtributos {
          public int a = 1;
 }

se vc não coloca isso significa q os modificadores são de acesso nível pacote…(DEFAULT)

e como vc ainda não tem pacotes…caso queira usar tente

package teste;

public bláblá

[/]'s

Pelo amor! Nunca faça isso! E o encapsulamento? O que tem haver a utilização de pacotes e ter que colocar os atributos como public? Os atributos são na maioria das vezes privados e os métodos acessores que são públicos… Se um atributo é público vc pode alterá-lo para um valor que talvez deixe o estado do objeto inconsistente.

Até mais!

Olá amigo tente assim;

[code]package teste;

class StaticAtributos {

public int a = 1;

}
class SemAtributo extends StaticAtributos{
public int b = 2;
}

class Teste{
public static void main(String[] args)
{
SemAtributo sa = new SemAtributo();
System.out.println(sa.a); // 1

        StaticAtributos st = new StaticAtributos();
        System.out.println(st.a); // 2
          
         StaticAtributos se = new StaticAtributos();
          System.out.println(se.a);  // 3
           
  }

}

[/code]

Esta mais do que claro que o rapaz ainda esta em fase de aprendizado…acredito que encapsulamento seja importante a partir do momento que vc tem uma boa base sobre OO…

No momento ele esta preocupado com a app que não esta rodando…

como vc mesmo disse NA MAIORIA…e a regra de negócio dele no momento não define nada sobre isso

[/]'s

Para evitar que nosso amigo davidbuzatto disse e com razão uma forma é criar métodos set e get assim deixando seus atributos privados:

[code] package pVarios;

class StaticAtributos {

 private int a = 1;

public int getA() {
	return a;
}

public void setA(int a) {
	this.a = a;
}

}
class SemAtributo extends StaticAtributos{
private int b = 2;

public int getB() {
	return b;
}

public void setB(int b) {
	this.b = b;
}

}

class Teste{
public static void main(String[] args)
{
SemAtributo sa = new SemAtributo();
System.out.println(sa.getA()); // 1

        StaticAtributos st = new StaticAtributos();
        System.out.println(st.getA()); // 2
          
         StaticAtributos se = new StaticAtributos();
          System.out.println(se.getA());  // 3
           
  }

}

[/code]
Abraço…

[quote=Giulliano]
Esta mais do que claro que o rapaz ainda esta em fase de aprendizado…[/quote]

Um motivo a mais para aprender a fazer da forma correta!

São raríssimas as ocasiões que justificam a utilização de atributos públicos, e no caso do nosso colega, não é uma delas.

Como falei, é melhor ensinar da forma correta do que ficar ensinando “truques” que só vão fazer com que a aplicação do cara se torne totalmente estruturada.

Sei que você quiz ajudar, mas ele têm que aprender da forma correta…

Até mais!