Na orientação a objetos, em uma relação de herança entre cla...

Próximas questões
Com base no mesmo assunto
Q233862 Engenharia de Software
Na orientação a objetos, em uma relação de herança entre classes, a subclasse herda da superclasse
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - todas as variáveis de instância e os métodos, entretanto, podem explicitamente sobrescrever alguns destes componentes.

Para resolver esta questão, é essencial compreender o conceito de herança na programação orientada a objetos. Herança é um dos pilares da orientação a objetos, permitindo que uma subclasse herde característica de uma superclasse, incluindo atributos (variáveis de instância) e métodos. Isso proporciona reusabilidade de código e facilitação na manutenção.

Em relação à alternativa correta (E), é importante entender que, na herança, a subclasse herda os atributos e métodos da superclasse, incluindo aqueles com visibilidade protected e default (se estiverem no mesmo pacote), além dos públicos. Métodos e atributos privados não são herdados pois são acessíveis apenas dentro da própria classe onde foram declarados. A subclasse tem a capacidade de sobrescrever, ou seja, definir sua própria implementação de métodos herdados (exceto métodos estáticos, que pertencem à classe e não ao objeto). Esse processo é também conhecido como overriding, permitindo que a subclasse especifique um comportamento específico para um método que já existe na superclasse.

Portanto, a alternativa (E) está correta pois reflete adequadamente o mecanismo de herança, incluindo a possibilidade de sobrescrita que está prevista no conceito de polimorfismo, outro pilar fundamental da orientação a objetos.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Discordo do letra E,

Baseando-se na linguagem Java, que também pode ser extendido em outras linguagens de programação orientadas a objeto (LPOO).

O correto seria incluir o trecho em vermelho:
e) todas as variáveis de instância e os métodos
(não privados), entretanto, podem explicitamente sobrescrever alguns destes componentes.

Principais palavras chaves de encapsulamento:

Public - Pode ser acesso de qualquer outro arquivo .java
Protected - Pode ser acessado somente em classes .java que herdam da classe pai
Private - somente pode ser vistos dentro da classe .java


Os métodos privados só são vistos dentro da arquivo .java que são criados. Não podem ser vistos por outro arquivo .java. PODE ser que seja possível utilizando uma classe interna, isso eu não sei, mas seria uma viagem da questão. Até porque isso é uma particularidade do Java e não das LPOOs.
Concordo plenamente com o colega acima.
Se  as variáveis de instância (que compõe o estado do objeto) ou algum método (determina o comportamento do objeto) for private (privado), não terá como ser herdado.

No livro de OCJP página 2 diz: "Uma subclasse que herda de uma superclasse recebe automaticamente as variáveis de instâncias acessíveis e os métodos definidos pela superclasse, mas é também livre para substituir métodos da superclasse para definir comportamentos mais específicos".
É uma questão de OO e não de JAVA:

"Na orientação a objetos, ..."
O fato de não estar visível não que dizer que não herda. Os atributos e os métodos são herdados, somente não estão visíveis a subclasse.
Ok que a questão não fala de Java, mas alguém poderia por favor dar exemplos de linguagens orientadas a objetos, em que a variáveis e métodos privados de instância são também herdados para a subclasse?

Obrigado.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo