Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Classe Object

A classe Object é mãe de todas classes do java,tanto as que são definidas pelo usuário como as que estão prontas dentro de pacotes como java.lang,java.util e outros?

3 respostas

Outra dúvida.

public class TestArrayReferencias {

    public static void main(String[] args) {
    //int[] idades = new int[5];
    Object[] contas = new Object[5];
    ContaCorrente cc1 = new ContaCorrente(22, 11);
    contas[0] = cc1;
    ContaPoupanca cc2 = new ContaPoupanca(22, 22);
    contas[1] = cc2;
    Cliente cliente = new Cliente();
    contas[2] = cliente;
    //System.out.println(cc2.getNumero());
  ** --->  System.out.println( contas[1].getNumero() ); <---**
     ContaPoupanca ref = (ContaPoupanca) contas[1]; //type cast
    System.out.println(cc2.getNumero());
    System.out.println(ref.getNumero());
    }

} Porque System.out.println( contas[1].getNumero() ); parou de funcionar sendo que nesta posição está a referência para o objeto(instância) da classe ContaPoupanca,onde está o método getNumero() ,apesar que contas é do tipo classe mais genérica,ou seja,classe Object,mas ela guarda uma referência para uma classe mais específica que é a classe ContaPoupanca,não deveria funcionar sem ser preciso fazer casting,como está no decorrer do código?

Oie Samuel, tudo bem contigo?

Respondendo a primeira pergunta:

Sim, a classe Object é mãe de todas as outras classes do mundo Java, um dos métodos que conseguimos usar por conta disso é o toString, pois é um dos métodos presentes na classe Object.

Segunda pergunta:

O código System.out.println( contas[1].getNumero() ); não funciona, pois a referência do objeto que está dentro da posição 1 do vetor contas é Object, e por isso ele só consegue chamar métodos e atributos que existem na classe Object. Então nessa situação você precisaria fazer o "casting" para funcionar.

Já o código System.out.println(cc2.getNumero()); funciona, pois ele está chamando a variável que está com a referência de "ContaPoupanca", e essa referência permite o acesso aos métodos específicos.

Segue o paralelo abaixo:

System.out.println( contas[1].getNumero() );
                                // não funciona, pois possui uma referência genérica, "Object", por isso precisa do cast para usar o método "getNumero"


System.out.println(cc2.getNumero());
            // funciona, pois a variável "cc2" tem um referência específica, "ContaPoupanca", consegue acessar os métodos específicos como o "getNumero"

Na próxima vez que tiver 2 dúvidas, recomendo que separe em um tópico diferente já que isso ajuda muito outros alunos a encontrarem esse tópico se tiverem uma dúvida semelhante.

Espero ter conseguido te ajudar!

Se tiver qualquer outra dúvida é só mandar por aqui no fórum :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!
solução!

Bom dia,Igor. Ok.Abs.