Desculpem ressuscitar o tópico, mas é exatamente minha dúvida. Está correto isso, árvore é um Pinheiro? Não seria ao contrário, Pinheiro é uma árvore?
Este operador é válido somente quando há herança entre classes ou pode ser usando com classes distintas?
A
Andre_Fonseca
oi,
o instanceof pode ser utilizado também para interfaces ou então array
dá uma olhada no link abaixo (inglês) e procure por Instanceof
No exemplo do thingol, árvore é o nome da variável, que guarda a referência de um Pinheiro. Não está sendo afirmado que árvore é um Pinheiro.
No caso, “árvore instanceof Pinheiro”, verifica se o conteúdo da variável árvore é do tipo Pinheiro.
D
denislima
No caso dele “arvore é um pinheiro” pois arvore eh o nome do objeto Pinheiro que com certeza deve ser subclasse de Arvore.
Fico confuso mesmo o nome (arvore) do objeto Pinheiro… mas isso eh so nomeclatura…
É valido quando ha heranca ou implementacao de interface…
Sempre seguindo a logica “É UM”
fallows
G
gRoOve
No caso, “árvore instanceof Pinheiro”, verifica se o conteúdo da variável árvore é do tipo Pinheiro.
Neste caso seria “pinheiro(Objeto) instanceof Pinheiro” correto? É que ficou confuso o nome da variável “tree” referenciando um objeto Pinheiro.
Obrigado a todos, entendi o conceito. Contudo não entendi onde eventualmente irei usar isto. Alguém pode dar um exemplo prático de quando vou verificar a relação É-UM?
E
Eric_Yuzo
Não acho que seja muito utilizado, mas eis um exemplo:
// Percorre os componentes de um container e limpa os text fields
for (Component c : container.getComponents()) {
if (c instanceof JTextField) { // Verifica se o componente é um JTextField usando instanceof
((JTextField)c).setText(""); // Se for, limpa o texto
}
}
Fonte: http://www.guj.com.br/java/216682-pegar-componentes-de-um-jframe#1105939
Exatamente, pois o objeto referenciado por “doberman” é uma instância da classe cao.
Mas como já foi discutido, isto é mais usado quando se tem herança e deseja-se saber a qual classe da herança o objeto pertence.
M
Marcio_Duran1
gRoOve:
Exatamente, pois o objeto referenciado por “doberman” é uma instância da classe cao.
Mas como já foi discutido, isto é mais usado quando se tem herança e deseja-se saber a qual classe da herança o objeto pertence.
importjava.util.ArrayList;importjava.util.Vector;publicclassMain{publicstaticvoidmain(String[]args){ObjecttestObject=newArrayList();displayObjectClass(testObject);}publicstaticvoiddisplayObjectClass(Objecto){if(oinstanceofVector)System.out.println("Object was an instance of the class java.util.Vector");elseif(oinstanceofArrayList)System.out.println("Object was an instance of the class java.util.ArrayList");elseSystem.out.println("Object was an instance of the "+o.getClass());}}
E
Edu22SNT
gRoOve:
Desculpem ressuscitar o tópico, mas é exatamente minha dúvida. Está correto isso, árvore é um Pinheiro? Não seria ao contrário, Pinheiro é uma árvore?
Este operador é válido somente quando há herança entre classes ou pode ser usando com classes distintas?
Ele está correto, a árvore é um pinheiro, ele se refere ao tipo da árvore.