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”