SóProvas


ID
1692751
Banca
IF-RJ
Órgão
IF-RJ
Ano
2010
Provas
Disciplina
Programação
Assuntos

Com relação aos modificadores de acesso “public" e “private" de uma classe Java, analise estas afirmações.

I. Os membros "public" são acessíveis onde quer que o programa tenha referencia a um objeto dessa classe ou de uma de suas subclasses.

II. Os membros “private" de uma classe só são acessíveis dentro da própria classe.

III. Os membros “private" de uma superclasse são herdados pelas suas subclasses.

Então, assinale a alternativa que contém somente as afirmações corretas. 

Alternativas
Comentários
  • Prezados, vamos analisar os itens 

    I. Os membros "public" são acessíveis onde quer que o programa tenha referência a um objeto dessa classe ou de uma de suas subclasses. 
    Item correto. É para isso que serve o modificador de acesso public, para garantir que o objeto tenha acesso irrestrito.
    II. Os membros “private" de uma classe só são acessíveis dentro da própria classe. 
    Item correto. O modificador de acesso private faz com que os membros só sejam acessíveis dentro da própria classe.
    III. Os membros “private" de uma superclasse são herdados pelas suas subclasses. 

    Item errado. Os membros private só são acessados pela própria classe, não sendo acessado por quem herda essa classe.

    Portanto a alternativa correta é a letra A.

  • O professor do Qconcurso comentou o seguinte:

    Prezados, vamos analisar os itens 
     

    I. Os membros "public" são acessíveis onde quer que o programa tenha referência a um objeto dessa classe ou de uma de suas subclasses. 

    Item correto. É para isso que serve o modificador de acesso public, para garantir que o objeto tenha acesso irrestrito.

    II. Os membros “private" de uma classe só são acessíveis dentro da própria classe. 

    Item correto. O modificador de acesso private faz com que os membros só sejam acessíveis dentro da própria classe.

    III. Os membros “private" de uma superclasse são herdados pelas suas subclasses. 

    Item errado. Os membros private só são acessados pela própria classe, não sendo acessado por quem herda essa classe.

    Portanto a alternativa correta é a letra A.

    Porém não é falado que os membros são acessados, apenas herdados, será que tem alguma bibliografia que fala sobre isso?

  • POLÊMICA POLÊMICA

    https://stackoverflow.com/questions/4716040/do-subclasses-inherit-private-fields/4716335#4716335

    Depende do ponto de vista, a própria documentação do JAVA fala que NÃO são herdados, porém se a gente vai a fundo, quando um método de uma superclasse altera um atributo privado, se não houvesse esse atributo privado como o objeto iria acessá-lo (ainda que indiretamente via setter/getter)?

    Tudo depende de "o que você quer dizer com herdar?" Por isso é polêmico e ambíguo...

    EDIT:

    É tão polêmico que essa questão afirma que herda sim os privados, mas não acessa

    https://www.qconcursos.com/questoes-de-concursos/questoes/38928df1-71

    Para isso que existe recurso, mas eu não sei porque os concurseiros não usam, ou se eles usam acho que as bancas não aceitam...