Java Polimorfismo cast Objetos instanceof

Java Polimorfismo cast Objetos instanceof. Linguagem Java.

Sumário: Polimorfismo,Sobrescrita e Polimorfismo,Argumentos e Polimorfismo,cast de Objetos,instanceof

Objetos tem apenas uma forma aquela que lhe é dada quando ele é construído porem uma variável é polimórfica ou seja ela faz referência para diferentes objetos. Relembrando:

Como se declara uma variável de referência?

<p>
  </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqer8tQcHzI/AAAAAAAAAY0/MIcXEg-PXqk/s1600-h/construtor.png"><img style="cursor: pointer; width: 320px; height: 146px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqer8tQcHzI/AAAAAAAAAY0/MIcXEg-PXqk/s320/construtor.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379457339346394930" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

  <p>
    Clique na imagem para ampliar</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

    <p>
      Quando eu crio um objeto oque realmente acontece?</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

      <p>
        </span><span style="color: rgb(0, 0, 0);font-family:arial;">Acontece a subida no topo da hierarquia do objeto, obtendo &#8211; se um objeto que tem tanto membros(Métodos, Atributos) próprios</span><span style="color: rgb(0, 0, 0);font-family:arial;"> quanto de todas as SuperClass da Hierarquia.</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"><br />Vejamos:</p> 

        <p>
          </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sqeu2LOQ6lI/AAAAAAAAAZM/oMjdvNGYVFE/s1600-h/heranca.png"><img style="cursor: pointer; width: 320px; height: 204px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sqeu2LOQ6lI/AAAAAAAAAZM/oMjdvNGYVFE/s320/heranca.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379460525666134610" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

          <p>
            Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;">, Lembrando que Implicitamente escrito ou explicitamente Toda Classe que não tenha um SuperClasse explicitamente escrito tem java.lang.object Implicitamente ou Explicitamente escrito como SuperClasse.</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

            <p>
              Sabemos que se criarmos um objeto do tipo </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Chefe</span><span style="color: rgb(0, 0, 0);font-family:arial;">, ele terá todos os membros(Métodos e Atributos que todas as Hierarquias acima).</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

              <h2>
                Java Polimorfismo cast Objetos instanceof
              </h2>

              <p>
                Vejamos:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                <p>
                  new Chefe();</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                  <p>
                    <span style="font-size:130%;"><br /></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-size:130%;"><span style="font-weight: bold;">Vamos obter isso:</span></span></p> 

                    <p>
                      </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqeyJCFpnmI/AAAAAAAAAZU/luf-5OrwDUs/s1600-h/objetoChefe.png"><img style="cursor: pointer; width: 315px; height: 320px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqeyJCFpnmI/AAAAAAAAAZU/luf-5OrwDUs/s320/objetoChefe.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379464148166483554" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                      <p>
                        Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Ja deu para perceber que todo objeto Chefe tem:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Tudo que é de direito ao cargo, no caso </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">carroEmpresa</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Chefe também </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">tem tudo que encarregado</span><span style="color: rgb(0, 0, 0);font-family:arial;"> tem no caso bonusSalarial e supervisionar()</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Chefe também </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">tem tudo que Funcionário</span><span style="color: rgb(0, 0, 0);font-family:arial;"> tem no caso nome, salario e trabalhar()</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Chefe também </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">tem tudo que java.lang.Object</span><span style="color: rgb(0, 0, 0);font-family:arial;"> tem</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Sendo assim vou abreviar para ficar mais facil o entendimento:</p> 

                        <p>
                          </span> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe5_7TLvjI/AAAAAAAAAZc/rY0Kl0dSw0A/s1600-h/heapStackabreviado.png"><img style="cursor: pointer; width: 292px; height: 320px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe5_7TLvjI/AAAAAAAAAZc/rY0Kl0dSw0A/s320/heapStackabreviado.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379472787818397234" border="0" /></a> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;"></p> 

                          <p>
                            Outro exemplo:
                          </p>

                          <p>
                            </span></span> <span style="color: rgb(0, 0, 0);font-family:arial;">Se Criar-mos um objeto <span style="font-weight: bold;">Funcionario</span>, Resumidamente teremos:</p> 

                            <p>
                              </span> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe6D8p7OfI/AAAAAAAAAZk/WimKJl2bJwI/s1600-h/heapStackabreviado2.png"><img style="cursor: pointer; width: 320px; height: 260px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe6D8p7OfI/AAAAAAAAAZk/WimKJl2bJwI/s320/heapStackabreviado2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379472856901695986" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"><br />Lembre-se que todo funcionário tem:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Oque é de direito ao cargo dele no caso : nome, salario e trabalhar()</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />E todo objeto Funcionário tem tudo que<span style="font-weight: bold;"> java.lang.Object </span>tem</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

                              <p>
                                Relação variável de referência e Objeto:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                <p>
                                  É aqui realmente que se encontra o Polimorfismo, de acordo com a palavra em si:<br /><span style="font-weight: bold;">Polimorfismo</span> = Muitas formas
                                </p>

                                <p>
                                  De acordo com a variável de referência você poderá acessar somente <span style="font-weight: bold;">OQUE FAZ PARTE DAQUELE TIPO DE OBJETO VEJAMOS:</p> 

                                  <p>
                                    Como Chefe é um Encarregado, ou seja é uma SubClasse da Classe Encarregado, Então isso é possível:
                                  </p>

                                  <p>
                                    </span></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sqe9A7FibxI/AAAAAAAAAZ0/rLMyIQhK1Os/s1600-h/construtorPolimorfico.png"><img style="cursor: pointer; width: 320px; height: 143px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sqe9A7FibxI/AAAAAAAAAZ0/rLMyIQhK1Os/s320/construtorPolimorfico.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379476103475916562" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                    <p>
                                      Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"></p> 

                                      <p>
                                        <span style="font-size:130%;">Oque acabamos de fazer?</p> 

                                        <p>
                                          </span></span><span><span style="font-size:130%;"><span style="font-size:100%;">Aqui temos um objeto do tipo Chefe porem a variável aponta para o objeto do tipo Encarregado, OU SEJA ela somente pode usar tudo que um Encarregado tem <br />Um <span style="font-weight: bold;">chefe</span> é um <span style="font-weight: bold;">Encarregado</span><br />Porem um <span style="font-weight: bold;">Encarregado</span> não é um <span style="font-weight: bold;">chefe</p> 

                                          <p>
                                            Vejamos:
                                          </p>

                                          <p>
                                            </span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqe-XNeXHOI/AAAAAAAAAZ8/yR6FGSNJmWM/s1600-h/heapStackabreviadoComVariavel.png"><img style="cursor: pointer; width: 320px; height: 216px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqe-XNeXHOI/AAAAAAAAAZ8/yR6FGSNJmWM/s320/heapStackabreviadoComVariavel.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379477585880620258" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                            <p>
                                              Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">Se você tentar acessar:</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                              <p>
                                                </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">identificador.carroEmpresa = true;</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Dará Erro de Compilação,</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Pois A variável de referência é do tipo Encarregado, E ENCARREGADO não tem carro da Empresa.</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                <p>
                                                  </span><span style="color: rgb(0, 0, 0);font-family:arial;">Se você tentar acessar:</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                  <p>
                                                    </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">identificador.trabalhar();</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Compilará Normalmente, </span><span style="color: rgb(0, 0, 0);font-family:arial;">Pois o método trabalhar é de Funcionário e a variavel de referência Aponta para o Encarregado do Objeto, e Encarregado é um </span><span style="color: rgb(0, 0, 0);font-family:arial;">Funcionário</span><span style="color: rgb(0, 0, 0);font-family:arial;">.</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

                                                    <p>
                                                      Por isso chegamos a conclusão de:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;">Um objeto só tem uma forma porem a variável de referência pode apontar para qualquer forma dele.</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><span style="font-size:130%;"></p> 

                                                      <p>
                                                        <span style="font-size:180%;"><br /></span></span></span></span>
                                                      </p>

                                                      <div style="text-align: center;">
                                                        <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><span style="font-size:130%;"><span style="font-size:180%;">Sobrescrita e Polimorfismo:</span></span></span></span>
                                                      </div>

                                                      <p>
                                                        <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:130%;"><span style="font-size:180%;"><span style="font-size:100%;"><br />Muita atenção em Sobrescrita e Polimorfismo,<br /></span></span></span></span><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><br />Vejamos o exemplo:</p> 

                                                        <p>
                                                          public class <span style="font-weight: bold;">Funcionario</span>{
                                                        </p>

                                                        <p>
                                                          public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Funcionario</span>&rdquo;);
                                                        </p>

                                                        <p>
                                                          }
                                                        </p>

                                                        <p>
                                                          }
                                                        </p>

                                                        <p>
                                                          public class <span style="font-weight: bold;">Gerente</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                        </p>

                                                        <p>
                                                          </span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;">public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Gerente</span>&rdquo;);</p> 

                                                          <p>
                                                            }</span></span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                            <p>
                                                              }
                                                            </p>

                                                            <p>
                                                              public class <span style="font-weight: bold;">TestClass</span>{
                                                            </p>

                                                            <p>
                                                              public static void <span style="font-weight: bold;">main</span>(String array [ ]){
                                                            </p>

                                                            <p>
                                                              <span style="font-weight: bold;">Funcionario</span> funcionario = new <span style="font-weight: bold;">Funcionario</span>();<br /><span style="font-weight: bold;">funcionario.metodo();</span>
                                                            </p>

                                                            <p>
                                                              <span style="font-weight: bold;">Gerente</span> gerente = new <span style="font-weight: bold;">Gerente</span>();<br /><span style="font-weight: bold;">gerente.metodo();</span>
                                                            </p>

                                                            <p>
                                                              }
                                                            </p>

                                                            <p>
                                                              }</span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                              <p>
                                                                </span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqpLALnrEJI/AAAAAAAAAaM/q7V2qePW0E4/s1600-h/heranca4.png"><img style="cursor: pointer; width: 320px; height: 203px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqpLALnrEJI/AAAAAAAAAaM/q7V2qePW0E4/s320/heranca4.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380195171338752146" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                <p>
                                                                  </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                  <p>
                                                                    Em </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">funcionario.metodo(); Aparecerá:<br />Funcionario<br /></span></span></span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                    <p>
                                                                      Em </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">gerente.metodo(); Aparecerá:<br />Gerente</p> 

                                                                      <p>
                                                                        Podemos ver dessa forma também:
                                                                      </p>

                                                                      <p>
                                                                        </span></span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqpSO04RN2I/AAAAAAAAAaU/tPCN5MTqIog/s1600-h/Exemplo07.png"><img style="cursor: pointer; width: 320px; height: 248px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqpSO04RN2I/AAAAAAAAAaU/tPCN5MTqIog/s320/Exemplo07.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380203119513778018" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                        <p>
                                                                          Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

                                                                          <p>
                                                                            Porem isso não acontece aqui:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><br /></span><br />Temos uma diferença seria quando existe Sobrescrita de método e Polimorfismo<span style="font-weight: bold;"><br /></span></p> 

                                                                            <p>
                                                                              public class <span style="font-weight: bold;">Funcionario</span>{
                                                                            </p>

                                                                            <p>
                                                                              public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Funcionario</span>&rdquo;);
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              public class <span style="font-weight: bold;">Gerente</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                                            </p>

                                                                            <p>
                                                                              public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Gerente</span>&rdquo;);
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">public class TestClass{</p> 

                                                                              <p>
                                                                                </span><span>public static void <span style="font-weight: bold;">main</span>(String array [ ]){</p> 

                                                                                <p>
                                                                                  <span style="font-weight: bold;">Funcionario</span> funcionario = new <span style="font-weight: bold;">Gerente</span>();<br />funcionario.<span style="font-weight: bold;">metodo</span>();
                                                                                </p>

                                                                                <p>
                                                                                  }
                                                                                </p>

                                                                                <p>
                                                                                  }</span><span style="font-weight: bold;"></p> 

                                                                                  <p>
                                                                                    Neste exemplo oque teremos na saída Padrão é:
                                                                                  </p>

                                                                                  <p>
                                                                                    Gerente
                                                                                  </p>

                                                                                  <p>
                                                                                    POR CAUSA DA SOBRESCRITA QUE ISSO ACONTECE
                                                                                  </p>

                                                                                  <p>
                                                                                    Em métodos sobrescritos na verdade obtém-se o comportamente associado ao objeto em tempo de EXECUÇÃO ou seja, invocamos o método do objeto gerente cujo sobrescreve o método da SuperClasse dele ou seja Funcionario.
                                                                                  </p>

                                                                                  <p>
                                                                                    PORTANTO CUIDADO COM INVOCAÇÃO DE MÉTODOS SOBRESCRITOS.
                                                                                  </p>

                                                                                  <p>
                                                                                    <span style="font-size:180%;"><br />Argumentos e Polimorfismo:</span></span><span><span style="font-size:180%;"><span style="font-size:100%;"></p> 

                                                                                    <p>
                                                                                      Você pode ter um Argumento de um tipo que seja uma SuperClasse e pode receber qualquer parâmetro que seja uma SubClasse dessa SuperClasse que esta como argumento.
                                                                                    </p>

                                                                                    <p>
                                                                                      <span style="font-weight: bold;">Vejamos:</span>
                                                                                    </p>

                                                                                    <p>
                                                                                      </span></span></span></span></span></span></span></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqplh465tQI/AAAAAAAAAak/sHbgYoGIUuY/s1600-h/ateroot.png"><img style="cursor: pointer; width: 320px; height: 207px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqplh465tQI/AAAAAAAAAak/sHbgYoGIUuY/s320/ateroot.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380224337737004290" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                      <p>
                                                                                        </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                        <p>
                                                                                          <span style="font-weight: bold;font-size:130%;">Vejamos em sintax java:</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                          <p>
                                                                                            </span><span style="color: rgb(0, 0, 0);font-family:arial;">public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Funcionario</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                            <p>
                                                                                              public void </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Object</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">argumento</span><span style="color: rgb(0, 0, 0);font-family:arial;">){</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                              <p>
                                                                                                }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                <p>
                                                                                                  }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                  <p>
                                                                                                    public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Encarregado</span><span style="color: rgb(0, 0, 0);font-family:arial;"> extends </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Funcionario</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                  </p>

                                                                                                  <p>
                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;"></span><span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                    <p>
                                                                                                      public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Chefe</span><span style="color: rgb(0, 0, 0);font-family:arial;"> extends </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Encarregado</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                    </p>

                                                                                                    <p>
                                                                                                      <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                      <p>
                                                                                                        public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClassTest</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                        <p>
                                                                                                          public static void main(String array[ ]){</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                          <p>
                                                                                                            Chefe chefe = new <span style="font-weight: bold;">Chefe</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                            <p>
                                                                                                              Encarregado encarregado = new <span style="font-weight: bold;">Encarregado</span>();</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;"><br />Funcionario funcionario = new <span style="font-weight: bold;">Funcionario</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                              <p>
                                                                                                                chefe.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />chefe.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                <p>
                                                                                                                  encarregado.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />encarregado.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                  <p>
                                                                                                                    funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />funcionario.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                    <p>
                                                                                                                      }</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

                                                                                                                      <p>
                                                                                                                        Quando fiz isso:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                        <p>
                                                                                                                          Chefe chefe = new <span style="font-weight: bold;">Chefe</span>();</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                          <p>
                                                                                                                            Encarregado encarregado = new <span style="font-weight: bold;">Encarregado</span>();</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                            <p>
                                                                                                                              Funcionario funcionario = new <span style="font-weight: bold;">Funcionario</span>();
                                                                                                                            </p>

                                                                                                                            <p>
                                                                                                                              <span style="font-weight: bold;font-size:130%;">Obtive:</span>
                                                                                                                            </p>

                                                                                                                            <p>
                                                                                                                              </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqppticthgI/AAAAAAAAAas/JtjGi8z7q4w/s1600-h/maisnovo.png"><img style="cursor: pointer; width: 320px; height: 317px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqppticthgI/AAAAAAAAAas/JtjGi8z7q4w/s320/maisnovo.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380228935909737986" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                              <p>
                                                                                                                                Clique na imagem para ampliar</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

                                                                                                                                <p>
                                                                                                                                  POREM CUIDADO:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                                                                                                                  <p>
                                                                                                                                    Dentro do Frame </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Object</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">argumento</span><span style="color: rgb(0, 0, 0);font-family:arial;">) eu estou me referênciando ao Objeto como se fosse um Object, oque implica em:</p> 

                                                                                                                                    <p>
                                                                                                                                      <span style="font-weight: bold;">Nesse exemplo:</span>
                                                                                                                                    </p>

                                                                                                                                    <p>
                                                                                                                                      </span><span style="color: rgb(0, 0, 0);font-family:arial;">funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                      <p>
                                                                                                                                        Eu obtive:
                                                                                                                                      </p>

                                                                                                                                      <p>
                                                                                                                                        </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqprwIxi4eI/AAAAAAAAAa0/tQRKURURQ6U/s1600-h/maisnovo2.png"><img style="cursor: pointer; width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqprwIxi4eI/AAAAAAAAAa0/tQRKURURQ6U/s320/maisnovo2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380231179580662242" border="0" /></a>
                                                                                                                                      </p>

                                                                                                                                      <p>
                                                                                                                                        <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Clique na imagem para ampliar</span>
                                                                                                                                      </p>

                                                                                                                                      <p>
                                                                                                                                        <span style="color: rgb(0, 0, 0);font-family:arial;">Oque Significa que eu SO TENHO ACESSO A PARTE java.lang.Object DO MEU OBJETO, ou seja desse Jeito eu não posso nem invocar:</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                        <p>
                                                                                                                                          argumento.metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Parametros</span><span style="color: rgb(0, 0, 0);font-family:arial;">); // Isso da erro de Compilação ja que argumento aponta PARA O TIPO java.lang.Object do Objeto.</span> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:130%;"></p> 

                                                                                                                                          <p>
                                                                                                                                            EM invocações:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                            <p>
                                                                                                                                              chefe.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />chefe.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                              <p>
                                                                                                                                                encarregado.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />encarregado.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                <p>
                                                                                                                                                  funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />funcionario.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                  <p>
                                                                                                                                                    <span style="font-weight: bold;">Simplesmente passei o endereço de memória referente ao objeto, nesse exemplo seria assim:</span>
                                                                                                                                                  </p>

                                                                                                                                                  <p>
                                                                                                                                                    </span><span style="color: rgb(0, 0, 0);font-family:arial;">encarregado.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">encarregado.metodo(<span style="font-weight: bold;">0xA3</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">chefe.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />chefe.metodo(<span style="font-weight: bold;">0xA2</span>);</p> 

                                                                                                                                                    <p>
                                                                                                                                                      </span><span style="color: rgb(0, 0, 0);font-family:arial;">funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">funcionario.metodo(<span style="font-weight: bold;">0xA1</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                      <p>
                                                                                                                                                        <span style="font-weight: bold;font-size:180%;">Cast de Objetos:</span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                                                                                                        <p>
                                                                                                                                                          Em algunas casos recebo como parametro uma referência de um objeto de uma SubClasse e como argumentos tenho uma classe que é SuperClasse dela, porem quero obter as funcionabilidades específicas da SubClasse, então posso fazer cast de OBJETOS.<br /></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                          <p>
                                                                                                                                                            <span style="font-weight: bold;">Vejamos o exemplo:</span><br /><span style="font-weight: bold;">Lembrando</span> que toda classe que não é declarado explicitamente nenhuma SuperClass tem java.lang.Object como SuperClasse Primária.
                                                                                                                                                          </p>

                                                                                                                                                          <p>
                                                                                                                                                            </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq4ztVaBaLI/AAAAAAAAAa8/J6gbXDBqBoc/s1600-h/heranca2.png"><img style="cursor: pointer; width: 320px; height: 135px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq4ztVaBaLI/AAAAAAAAAa8/J6gbXDBqBoc/s320/heranca2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381295458687740082" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                            <p>
                                                                                                                                                              Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                              <p>
                                                                                                                                                                public class <span style="font-weight: bold;">Funcionario</span>{
                                                                                                                                                              </p>

                                                                                                                                                              <p>
                                                                                                                                                                public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object argumento</span>){<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado cast = (</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">) argumento;</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;">cast.<span style="font-weight: bold;">e</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">xclusivo</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />}</p> 

                                                                                                                                                                <p>
                                                                                                                                                                  }
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  public class <span style="font-weight: bold;">Encarregado extends Funcionario</span>{
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  public void <span style="font-weight: bold;">exclusivo</span>(){<br />System.out.println(&ldquo;Metodo Exclusivo&rdquo;);<br />}
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  }<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                  <p>
                                                                                                                                                                    public class <span style="font-weight: bold;">TestClass</span>{
                                                                                                                                                                  </p>

                                                                                                                                                                  <p>
                                                                                                                                                                    public static void <span style="font-weight: bold;">main</span>(String array[ ]){<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado referencia = </span>new<span style="font-weight: bold;"> </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado();</span></span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">referencia.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                    <p>
                                                                                                                                                                      }<br />}<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:180%;"><span style="font-size:100%;"></p> 

                                                                                                                                                                      <p>
                                                                                                                                                                        Vejamos oque acontece quando o </span></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;">referencia.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">); sobe o Frame </span><span style="color: rgb(0, 0, 0);font-family:arial;">.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">) na Stack de main:</p> 

                                                                                                                                                                        <p>
                                                                                                                                                                          Ao invocar </span><span style="color: rgb(0, 0, 0);font-family:arial;">referencia.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">) temos dentro do Frame:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;">public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object argumento</span>):</p> 

                                                                                                                                                                          <p>
                                                                                                                                                                            </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq47tPjS9ZI/AAAAAAAAAbE/Ray5S--RH7g/s1600-h/this.png"><img style="cursor: pointer; width: 320px; height: 172px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq47tPjS9ZI/AAAAAAAAAbE/Ray5S--RH7g/s320/this.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381304253209048466" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                            <p>
                                                                                                                                                                              Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-size:130%;">Nessa instrução:</p> 

                                                                                                                                                                              <p>
                                                                                                                                                                                </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">cast</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;"> = (</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">) argumento;</p> 

                                                                                                                                                                                <p>
                                                                                                                                                                                  Temos agora:
                                                                                                                                                                                </p>

                                                                                                                                                                                <p>
                                                                                                                                                                                  </span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5ABamwm7I/AAAAAAAAAbM/FyXV6IfDIvg/s1600-h/this2.png"><img style="cursor: pointer; width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5ABamwm7I/AAAAAAAAAbM/FyXV6IfDIvg/s320/this2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381308997820259250" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;">, Sendo a posição 0 da Local Variable a referência a Constant Pool, posição 1 </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">argumento , posição 2 </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">cast.</p> 

                                                                                                                                                                                  <p>
                                                                                                                                                                                    Perceba na imagem acima,</span><span> que a variavel argumento tem acesso somente a parte java.lang.Object do nosso Objeto encarregado ja a variavel cast tem acesso a Parte Encarregado do nosso Objeto, ou seja a variavel cast TEM ACESSO A TUDO DO OBJETO, por isso é possível invocar </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"> <span style="font-weight: bold;">exclusivo</span>().</p> 

                                                                                                                                                                                    <p>
                                                                                                                                                                                      </span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Operador instanceof:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                                                                                                                                                                      <p>
                                                                                                                                                                                        Simplismente uma maneira de ter certeza que o cast do Objeto é aceitável, vamos supor:
                                                                                                                                                                                      </p>

                                                                                                                                                                                      <p>
                                                                                                                                                                                        </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5HGtrr3DI/AAAAAAAAAbU/6JZT2bAXqCo/s1600-h/heranca3.png"><img style="cursor: pointer; width: 320px; height: 135px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5HGtrr3DI/AAAAAAAAAbU/6JZT2bAXqCo/s320/heranca3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381316785421933618" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                        <p>
                                                                                                                                                                                          Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                                                                                                                                                                          <p>
                                                                                                                                                                                            public class <span style="font-weight: bold;">Funcionario</span>{
                                                                                                                                                                                          </p>

                                                                                                                                                                                          <p>
                                                                                                                                                                                            public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object variavelArgumento</span>){
                                                                                                                                                                                          </p>

                                                                                                                                                                                          <p>
                                                                                                                                                                                            Encarregado variavelCast = (<span style="font-weight: bold;">Encarregado</span>) variavelArgumento;<br /><span style="font-weight: bold;">variavelCast.</span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">exclusivoEncarregado()</span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">;</span></p> 

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }<br />}
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public class <span style="font-weight: bold;">Encarregado</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public<span style="font-weight: bold;"> void exclusivoEncarregado(){</span>
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }<br />}
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public class <span style="font-weight: bold;">ClasseSolta</span>{
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public class <span style="font-weight: bold;">ClassTest</span>{
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public static void <span style="font-weight: bold;">main</span>(String array[]){
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              <span style="font-weight: bold;">Encarregado</span> d = new <span style="font-weight: bold;">Encarregado</span>();<br />ClasseSolta <span style="font-weight: bold;">variavelSolta</span> = new ClasseSolta();
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              <span style="font-weight: bold;">d.metodo(variavelSolta);</span>
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }<br />}
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              Isso gera um<span>a</span><span style="font-weight: bold;"> Exception. Vejamos:</p> 

                                                                                                                                                                                              <p>
                                                                                                                                                                                                Dentro da </span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">ClassTest temos o método main nele , instanciamos um Objeto do tipo </span></span> <span style="color: rgb(0, 0, 0);font-family:arial;">ClasseSolta, como ClasseSolta é uma SubClasse de java.lang.Object Obtemos nessa instrução,</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">ClasseSolta <span style="font-weight: bold;">variavelSolta</span> = new ClasseSolta();// Ou seja na instanciação do Objeto</p> 

                                                                                                                                                                                                <p>
                                                                                                                                                                                                  <span style="font-weight: bold;">isso:</span><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    </span></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s1600-h/ObjetoClasseSolta.png"><img style="cursor: pointer; width: 320px; height: 260px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s320/ObjetoClasseSolta.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381318423833898146" border="0" /></a>
                                                                                                                                                                                                  </p>

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;">Quando invocamos:</span>
                                                                                                                                                                                                  </p>

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">d.metodo(variavelSolta);</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                    <p>
                                                                                                                                                                                                      Sobe-se o frame do método de assinatura:</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object variavelArgumento</span>)</p> 

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        </span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq6sSGctZQI/AAAAAAAAAbs/ADhgNsmsLCY/s1600-h/ProgramaProcesso2.png"><img style="cursor: pointer; width: 320px; height: 263px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq6sSGctZQI/AAAAAAAAAbs/ADhgNsmsLCY/s320/ProgramaProcesso2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381428031722972418" border="0" /></a>
                                                                                                                                                                                                      </p>

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        <span style="font-weight: bold;">Clique na imagem para ampliar</span>
                                                                                                                                                                                                      </p>

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">Então verfica-se o seguinte,<br /><span style="font-weight: bold;">variavelSolta é do tipo Object? </span></p> 

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          Sim variavelSolta tem uma referência a um objeto do tipo Object dentro dela também ou seja:
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s1600-h/ObjetoClasseSolta.png"><img style="cursor: pointer; width: 320px; height: 260px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s320/ObjetoClasseSolta.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381318423833898146" border="0" /></a>
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          Seguindo Instruções:<br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">Encarregado <span style="font-weight: bold;">variavelCast</span> = (<span style="font-weight: bold;">Encarregado</span>) <span style="font-weight: bold;">variavelArgumento</span>;<br />Da para a </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">variavelCast apontar para a parte Encarregado do objeto ao qual </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">variavelArgumento tem uma referência?</span></span>
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq6tUoBA5NI/AAAAAAAAAb0/vRzuxha-hco/s1600-h/variavelArgumento.png"><img style="cursor: pointer; width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq6tUoBA5NI/AAAAAAAAAb0/vRzuxha-hco/s320/variavelArgumento.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381429174604981458" border="0" /></a>
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">Não,</span> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">variavelArgumento é do tipo ClasseSolta que é uma SubClasse de java.lang.Object logo não tem um objeto do tipo Encarregado. Ate poderiamos fazer um cast para ClasseSolta.</p> 

                                                                                                                                                                                                          <p>
                                                                                                                                                                                                            <span style="font-weight: bold;">Veja como o compilador tentar ver:</span>
                                                                                                                                                                                                          </p>

                                                                                                                                                                                                          <p>
                                                                                                                                                                                                            </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5KU4RXzKI/AAAAAAAAAbk/-Xbeg21M5Os/s1600-h/ObjetoClasseSolta2.png"><img style="cursor: pointer; width: 320px; height: 191px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5KU4RXzKI/AAAAAAAAAbk/-Xbeg21M5Os/s320/ObjetoClasseSolta2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381320327317408930" border="0" /></a> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"></p> 

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              Clique na imagem para ampliar,- Houve a tentativa de fazer cast para que a </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">variavelCast</span></span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"> aponte para a parte Encarregado do objeto</span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;">porem o objeto</span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"> é do tipo java.lang.Object e ClasseSolta</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">, como vou achar algo que ela não tem?</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><br /></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                </span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><br />Agora se fizer isso:<br /></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Funcionario</span>{</span>
                                                                                                                                                                                                              </p>

                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                <span style="color: rgb(0, 0, 0);font-family:arial;">public void </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(Object variavelArgumento){</span>
                                                                                                                                                                                                              </p>

                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                <span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">if</span>(variavelArgumento </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">instanceof</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Funcionario){<br /></span> <span style="color: rgb(0, 0, 0);font-family:arial;">Encarregado variavelCast = (Encarregado) variavelArgumento;<br /></span> <span style="color: rgb(0, 0, 0);font-family:arial;">variavelCast.exclusivoFuncionario();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  }</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Encarregado</span> extends <span style="font-weight: bold;">Funcionario</span>{</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">public void <span style="font-weight: bold;">exclusivoFuncionario</span>(){</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                    public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClasseSolta</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                                                                                                                                  </p>

                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                    <p>
                                                                                                                                                                                                                      public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClassTest</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                                                                                                                                    </p>

                                                                                                                                                                                                                    <p>
                                                                                                                                                                                                                      <span style="color: rgb(0, 0, 0);font-family:arial;">public static void <span style="font-weight: bold;">main</span>(String array[]){</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                      <p>
                                                                                                                                                                                                                        Encarregado <span style="font-weight: bold;">d</span> = new <span style="font-weight: bold;">Encarregado</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                        <p>
                                                                                                                                                                                                                          ClasseSolta <span style="font-weight: bold;">variavelSolta</span> = new ClasseSolta();</span> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;"><br />d.metodo(variavelSolta);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                          <p>
                                                                                                                                                                                                                            }</span>
                                                                                                                                                                                                                          </p>

                                                                                                                                                                                                                          <p>
                                                                                                                                                                                                                            <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                            <p>
                                                                                                                                                                                                                              Reparte que em </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClassTest</span><span style="color: rgb(0, 0, 0);font-family:arial;"> invocamos:</span> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;"><br />d.metodo(variavelSolta);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Sobe-se o frame do metodo de assinatura:</span> <span style="color: rgb(0, 0, 0);font-family:arial;">public void </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(Object variavelArgumento)</p> 

                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                Faz-se a verificação, o objeto </span><span style="color: rgb(0, 0, 0);font-family:arial;">ClasseSolta a qual a variavel de referencia </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">variavelSolta<br />aponta é do tipo Object também? SIM!</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                                  Então entra-se na lógica do método:
                                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                                  </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">if</span>(variavelArgumento </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">instanceof</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Funcionario)</p> 

                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                    variavelArgumento aponta para um objeto do tipo ClasseSolta, essa ClasseSolta é uma SubClasse de Funcionario?<br />A resposta é não, porem existe uma lógica de tratamento então simplesmente o programa não executa o bloco de código do if, <span style="font-weight: bold;">porem NÃO DA EXCEPTION.</p> 

                                                                                                                                                                                                                                    <p>
                                                                                                                                                                                                                                      </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Dicas sobre cast:</span></p> 

                                                                                                                                                                                                                                      <p>
                                                                                                                                                                                                                                        1 &#8211; Uma &ldquo;Promoção&rdquo; de objetos é permitida sem nenhum operador de cast,Sendo Funcionario a SuperClasse Direta de Encarregado, vejamos:
                                                                                                                                                                                                                                      </p>

                                                                                                                                                                                                                                      <p>
                                                                                                                                                                                                                                        </span><span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Funcionario</span>{</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                        <p>
                                                                                                                                                                                                                                          }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                          <p>
                                                                                                                                                                                                                                            </span><span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Encarregado extends Funcionario</span>{</p> 

                                                                                                                                                                                                                                            <p>
                                                                                                                                                                                                                                              }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                                public class <span style="font-weight: bold;">TestClass</span>{
                                                                                                                                                                                                                                              </p>

                                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                                public static void <span style="font-weight: bold;">main</span>(String array[ ]){
                                                                                                                                                                                                                                              </p>

                                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                                </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Funcionario referencia = </span>new<span style="font-weight: bold;"> </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado();</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                                                  }<br />}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                                    2 &#8211; Para asseguar que não haja exception, use instanceof antes de cast
                                                                                                                                                                                                                                                  </p>

                                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                                    <span style="font-weight: bold;">&#8211; Muito CUIDADO AO TER HERANÇA POLIMORFISMO E SOBRESCRITA DE MÉTODOS.</span>
                                                                                                                                                                                                                                                  </p>

                                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                                    </span>
                                                                                                                                                                                                                                                  </p>