public class Teste{
public int atributo1;
public static int atributo2;
}
Atributos static são atributos da classe, não é necessario que haja um objeto para acessa-lo.
no codigo acima é possivel usar:
Atributos não static são atributos do objeto, ou seja é criado um para cada instancia da classe, é necessario criar um objeto antes de usar o atributo:
Teste tes = new Teste();
tes.atributo1;
a mesma regra para metodos!
Polimorfismo e herança:
http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=85
public:
indica que a classe, metodo ou atributo pode ser acessado de qualquer lugar, sem restrição…
private:
é privado da classe e não pode ser acessado fora dela.
protected:
é uma mesclagem dos dois acima, não é privado mas tambem não pode ser acessado por qualquer um, somente de uma classe filha…
public class Classe1{
public int atributo1;
private int atributo2;
protected int atributo3;
}
public class Classe2 extends Classe1{
Classe1 c = new Classe1();
public Classe2(){
//permitido porque atributo1 é publico
c.atributo1 = 1234;
//não permitido porque atributo2 é privado da Classe1
c.atributo2 = 5231;
//permitido porque Classe2 herda de Classe1
c.atributo3 = 125;
}
}
os mais usados são public e private, protected é usado em situações mais especificas, como diria o pessoal da Sun: ao usar protected ou você sabe exatamente o que está fazendo ou não faz a menor ideia.