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 ?
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
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.
}
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
}
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
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
}
[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…