public class A {
protected String user = "sergio";
}
public class B extends A {
}
public class C {
public static void main(String [] args) {
B b = new B();
System.out.println("=> " + b.user);
}
}
Pra mim protected só podia ser acessado por subclasses.
A única diferença de protected para default é que protected permite que classes herdeiras de fora do pacote tenham acesso.
Isto é, protected é menos restritivo que default. Protected contem default.
Bom, no meu Deitel (livro) de Java eles dizem que protected dá acesso a classes que extendem e a classes amigas. Deve ser a isso que eles se referem quando falam em classes amigas.