Na orientação a objetos, em uma relação de herança entre cla...
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. Repetindo: A questão não se limita a nenhuma linguagem, e sim apenas ao CONCEITO (que é, resumidamente, permitir que classes herdem atributos e métodos das superclasses).
E outra né galera.
Se vc ler e as 5 alternativas e elas estiverem a seu ver, erradas, vc fará o que? Chutará em qualquer uma?
Claro que não né.
Elimine as totalmente erradas e assinale a menos errada ou incompleta.
A alternativa E está errada?, não, ela esta incompleta.
A letra B) está incompleta e a E) é a mais completa entre as alternativas.
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.