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?
Considere a linha acima.
String é uma subclasse de Object.
Com isso, você pode fazer uma das validações abaixo e ter retorno true
strinstanceofStringstrinstanceofObject
Comprovando o que temos na afirmação inicial
Agora, se você tiver:
Objectobj=newObject();
Você terá true pra a primeira e false para a segunda
objinstanceofObjectobjinstanceofString
Afinal, a instância obj não é uma instância da classe String (que é uma subclasse de Object).
S
staroski1 like
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:
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:
BumObjetoDoTipoB=newA();// B é mais específico que A
H
Hyagomvale
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”