SóProvas


ID
1404001
Banca
FGV
Órgão
TJ-BA
Ano
2015
Provas
Disciplina
Programação
Assuntos

Em uma aplicação Java há um determinado método da classe A que deve ser visível apenas:
- a todas as classes do mesmo pacote em que A foi declarada;
- às subclasses de A declaradas em outros pacotes.

O modificador que deve obrigatoriamente estar presente na declaração desse método é:

Alternativas
Comentários
  • Pra mim, o gabarito está errado. Quando o modificador é protected, as subclasses de A declaradas em outros pacotes não são visíveis. O correto seria public.

  • Public

    O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java.

    Private

    O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra.

    Protected

    O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote tem acesso ao membro. O pacote da subclasse não tem acesso ao membro.


  • Para uma subclasse de fora do pacote, o membro protected só pode ser acessado através de herança!

  • leo saline,

    Depois eu vi melhor no livro da certificação e realmente está correto. Como o Francieudo citou: "Para uma subclasse de fora do pacote, o membro protected só pode ser acessado através de herança". Obrigada!

  • A questão fala de subclasses entao extende a class principal o correto é o modificador correto é o protected!

  • Pra começar existem somente 3 modificadores (private, protected e public), e com isso temos 4 níveis de visibilidade

    Os níveis são os que você disse: private, default, protected e public

    Private: A única classe que tem acesso ao atributo é a própria classe que o define, ou seja, se uma classe Pessoa declara um atributo privado chamado nome, somente a classe Pessoa terá acesso a ele.

    Default: Tem acesso a um atributo default (identificado pela ausência de modificadores) todas as classes que estiverem no mesmo pacote que a classe que possui o atributo.

    Protected: Esse é o que pega mais gente, ele é praticamente igual ao default, com a diferença de que se uma classe (mesmo que esteja fora do pacote) estende da classe com o atributo protected, ela terá acesso a ele. Então o acesso é por pacote e por herança.

    Public: Esse é fácil, todos tem acesso :)

    O nível de visibilidade envolve encapsulamento. É sempre dito como boa prática que atributos internos devem ser privados, pois classes externas nem devem saber que ele existe. O que a classe expõe são suas funcionalidades, sua API, se preferir. Expor atributos internos pode causar sérios problemas de segurança. Se tem algo que é inerente à implementação, que pode vir a mudar no futuro. provavelmente deve ser privado.