Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Não entendi esse conceito.

a classe Conta é uma classe abstrata certo? não é possivel instanciar uma class abstrata, mais é possivel fazer? new Conta[10]; não deixa de ser abstrata certo? mais viro tipo um array, e assim é possivel instanciar essa classe? como um array?

15 respostas
solução

Olá Alisson, ainda assim não podemos instanciar a classe Conta. Apenas as filhas dessa classe.

Para esclarecer um pouco

Conta[] contas = new Conta[3];

é equivalente a usarmos declaramos 3 variáveis do tipo Conta.

Conta conta1;
Conta conta2;
Conta conta3;

Mas repare que nos dois casos, não estamos instanciando Conta. Estamos apenas declarando as variáveis.

No 1o caso, em um array de Contas e no segundo, uma variável para cada Conta.

Detalhe, repare que depois de criar o array de contas:

Conta[] contas = new Conta[3];

Você poderá instanciar as classes filhas, por exemplo:

contas[0] = new ContaCorrente();
contas[1] = new ContaPoupanca();

Ola lucas otima explicação! obrigado.

contas[0] = new ContaCorrente(); contas[1] = new ContaPoupanca();

esta usando o conceito de polimorfismo?

Nessa parte de array sempre achei muito chato kkk, em programação java usa bastante? é muito melhor usar o collection não é?

Isso mesmo, envolve o conceito de polimorfismo!

E sim, no dia a dia usamos mais collections sim. (: Mas o conceito ainda assim é bem importante e usado em várias linguagens de programação. O ponto é que depende muito do que você quer fazer.

Excelente explicação Lucas! Me ajudou a entender também o exercício! Obrigado!

Explicação perfeita. Obrigado.

Muito bem!

É muito bom saber que estão entendendo e interagindo!

Parabéns pessoal! Bons estudos! (:

Quando criamos

Conta conta = new Conta();

Estamos criando uma instancia de conta. Como Conta é abstract, não é possível realizar essa criação. Já que uma classe abstrata não pode ser instanciada.

Quando criamos Conta[] conta = new Conta[10];

Não estamos criando uma instancia de conta, mas sim um array de variáveis do tipo Conta. O que seria o mesmo que:

Conta conta1;
Conta conta2;
Conta conta3;
[...]

Agora, para instanciarmos cada uma delas, devemos usar uma classe concreta. Ex.:

Conta conta1 = new ContaCorrente();

No exemplo acima estamos criando uma instância de ContaCorrente e armazenando-a em uma classe do tipo Conta.

O exemplo anterior seria o mesmo que fazer o seguinte (em array):

conta[0] = new ContaCorrente();

Esse post tirou minhas dúvidas! Obrigada Lucas!

Deu pra entender melhor com esse post mesmo!

Bom saber também que os atributos mais usados! Tenho um costume maior de usar collection mas realmente é necessário entender o array para não ter dúvidas!

Ótimo post!

Obrigado pelas explicações pessoal.

Fiquei com uma dúvida em cima da explicação. Qual a serventia de eu criar um objeto e não instanciá-lo?

Ex:

Conta c1;

Se eu não instanciar c1, qual a utilidade prática dele dentro do meu código, já que, a princípio, não vou conseguir manipular de fato esse objeto?

Obrigado! Michel

Mais um obrigado ao Lucas por esclarecer esse exercício!

Lucas, você é meu herói!!!!!

Nem o Eclipse se entende bem quando fazemos :

new Conta[3];

mas as explicações foram boas!

Parabéns Lucas !!!