Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Aplique modificadores de acesso > Exercício 5, protected e instância?

A minhas pergunta é: Membro protected, não pode ser acessado em uma instância/objeto quando instanciado em outra classe de outro pacote, correto?

Mesmo sendo um método protected da mesma classe, não é permitido o acesso ao mesmo em outra classe de outro pacote, correto?

package a;
import b.*;
public class A extends B { protected int a(String s)
                           {return 2;} }

package b;
import a.*;
public class B { public int a(Object s) {return 1;} }

import a.*;
import b.*;
class C {
    public static void main(String[] args) {
        System.out.println(new A().a("a"));
    }
}
3 respostas

Boa tarde Wagner,

Membros protected só podem ser acessado em classes de outros pacotes se elas herdarem a classe que tem o membro.

Classe Animal no pacote animal tem membros protected, logo as classes que herdam Animal(independente do pacote) terão acesso a esses membros.

Esclareci sua dúvida?

Boa tarde Guilherme, obrigado pela última vez que me ajudou e por agora tb. Esta afirmação que fez agora é bastante semelhante ao citado no vídeo, eu fiquei com dúvida, pois pensei que o objeto teria acesso ao seu atributo protected independente de ser chamado em um escopo de uma classe, fora de seu pacote e que não o Herda, como a resposta do exercício e a sua são os mesmos, concluo que o objeto gerado, criado, em outra classe de outro pacote que, cuja classe não o herda, não poderá acessar seus membros protected.

solução

Isso Wagner, duas classes de pacotes diferentes não podem acessar membros protected uma das outras se não tiver herança!

Você pode faze um teste assim: Cria uma class A com uma variável protected e uma B que extend A em outro pacote e tenta acessar esse membro, depois tira a herança e tenta acessar.