Bom

Quando uma classe tem um membro protegido (protected) significa que este membro tem o comportamento SEMELHANTE ao modificador de acesso default, ou seja, um membro sem nenhum modificador de acesso (public, protected e private). Mas como um default “funciona”?, um membro default só pode ser visto pela própria classe e pelos seus “visinhos” (outras classes do mesmo pacote) da mesma forma funciona um membro protected, porém, com uma única diferença: as subclasses da classe que contém o membro protected podem ter acesso a esse membro. Contudo, se essa suclasse estiver num pacote diferente da superclasse isso implica que somente a subclasse poderá ter acesso a esse membro protegido mas não as outras classes do mesmo pacote da subclasse (neste caso, esse comportamento é semelhante a um membro private)

Bom assim eu entendi, caso tenha alguma coisa errada por favor me corrijam. No caso de alguma omissão me perdoem.

Um forte abraço

Deyvid Rannyere Moraes Costa - SCJP em 2008

pela segunda vez.

eh isso, tah certo… soh lembrando que o membro protected pode ser visto por qualquer filho, ateh filho do filho. E cuidado para não confundir se tiver outro atributo public com o mesmo nome do atributo protected:

package teste.a;

public class Pai {

	protected int i;

	public Pai(int i) {
		this.i = i;
	}

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}
}
package teste.b;

import teste.a.Pai;

public class Filho1 extends Pai {

	public Filho1(int i) {
		super(i);
	}

}
package teste.b;

public class Filho2 extends Filho1 {

	public int i;

	public Filho2() {
		super(1);
		this.i = 2;
	}

	public void a() {
		System.out.println(i);
		System.out.println(super.i);
		System.out.println(getI());
	}

	public static void main(String[] args) {
		new Filho2().a();
	}

}