Questão conceitual JAVA

Boa tarde.

Fiz um concurso que considerou a seguinte afirmação verdadeira:
“Um objeto de uma subclasse também é um objeto de uma superclasse”

Em meu raciocínio as coisas não funcionam assim, poderia dizer que os objetos da superclasse também são da subclasse (via herança). Alguém pode me explicar a afirmação?

String str = "";

Considere a linha acima.
String é uma subclasse de Object.
Com isso, você pode fazer uma das validações abaixo e ter retorno true

str instanceof String
str instanceof Object

Comprovando o que temos na afirmação inicial

Agora, se você tiver:

Object obj = new Object();

Você terá true pra a primeira e false para a segunda

obj instanceof Object
obj instanceof String

Afinal, a instância obj não é uma instância da classe String (que é uma subclasse de Object).

Sim, é isso mesmo.
A herança representa a relação do tipo “é um”.
Suponha que você tenha um tipo A e um tipo B extends A, então podemos afirmar que B é também é um A pois ele herda todas as características de A.

Você consegue provar isso através do seguinte exemplo:

A umObjetoDoTipoA = new A();
A outroObjetoDoTipoA = new B(); // B extends A, logo B é também um A

Já o contrário não é verdade, um objeto do tipo A não é um objeto do tipo B, pois objeto do tipo B são especializações do tipo A e podem conter características adicionais.

Então o seguinte código não é valido:

B umObjetoDoTipoB = new A(); // B é mais específico que A
1 curtida

Sabe o que é Polimorfismo?
Se não, essa seria uma parta de definição “Um objeto de uma subclasse também é um objeto de uma superclasse”