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

Conta cc = new ContaCorrente(); –> O que significa?

Quando criamos a instância cc em:

Conta cc = new ContaCorrente();

O cc será do tipo Conta? Então, o que significa o lado direito? Pq colocar “new + Classe-filha”?

obs: Conta é classe-mãe de ContaCorrente.

8 respostas

Oi, Caroline. Tudo bem?

O lado direito significa que o novo objeto criado(cc) é da classe ContaCorrente que deriva de Conta. Como voce mesmo disse, Conta é mãe de ContaCorrente.

O principal motivo pelo qual você faria isso é desacoplar seu código de uma implementação específica da interface. Vou te dar um exemplo que pertence ao Collections do Java.

Imagina criar esse objeto: List<String> list = new ArrayList<String>();

e quando você já avançou no código, alguem define que o objeto deve ser outro

List<String>list = new LinkedList<String>();

o resto do seu código só sabe que os dados são do tipo List, o que é preferível porque permite alternar entre diferentes implementações da interface List com facilidade, assim como Conta... se essa implementação que você está fazendo, no futuro mudar pra ContaPoupaça, você não terá dor de cabeça.

Tem uma máxima no mundo dev que diz: "Programar voltado para interface e não para a implementação". É exatamente isso que você está aprendendo =)

Espero ter ajudado, se tiver mais duvidas pode mandar

Bons estudos

O lado direito entendi. Indica o tipo do novo objeto criado... Mas e o do esquerdo é oq então? Não consigo visualizar

Ei Caroline, espero não ter te deixado mais confusa com a minha explicação anterior, juro que a intenção é ajudar =)

Então temos que o lado direito é o tipo do objeto, certo? Certo! O lado esquerdo então é a referência(segura essa palavra e não solta por nada) desse objeto.

A referência(olha a palavra aí) de um objeto em seu nível mais abstrato(que aqui é Conta) pra ajudar sua visualização vai te dizer o seguinte: Toda conta corrente é uma conta, mas nem toda conta é conta corrente(pois pode ser poupança também, certo?) E é por isso que usamos a referência(olha ela de novo) no polimorfismo.

Todo objeto em Java precisa de um tipo e uma referência(opa), se você define que ContaCorrente cc = new ContaCorrente(); a referencia, sendo conta corrente te obriga a implementar na mão(no caso dentro da classe) tudo que Conta já tem, pois esse é o papel de uma interface.

E se você for pro lado de tentar criar um objeto que tem referência e tipo Conta, você não vai conseguir pois não pode instanciar uma interface.

Sendo assim, a boa pratica determina que, usando polimorfismo, você define o objeto com o tipo que quer trabalhar(que é ContaCorrente) tendo como referência(juro que essa é a ultima) sua classe abstrata(Conta).

Espero ter ajudado, continuo à disposição =)

Bons estudos.

ué, Conta é uma interface? Conta não seria apenas uma classe abstrata? Acho que ContaCorrente estende à Conta, não?

Desculpa se eu estiver demorando a entender, essa parte é bem complexa pra mim...

solução!

Ei, Caroline.

Não precisa se desculpar, este é um conceito importante da orientação a objetos e é necessário fixar =)

Eu acho que te confundi nessa parte aqui


E se você for pro lado de tentar criar um objeto que tem referência e tipo Conta, você não vai conseguir pois não pode instanciar uma interface.


Eu deveria ter dito que você não consegue instanciar uma interface assim como você não consegue instanciar uma classe abstrata, tá bem?

Classes abstratas e Interfaces só servem como tipos de referencia(como eu já expliquei na sua duvida original)

A duvida que eu acabei gerando em você agora é sobre Conta ser Interface ou classe abstrata: No seu exemplo especificamente, de acordo com a observação que você colocou na duvida original, Conta é mãe de ContaCorrente, logo, ContaCorrente extends Conta, portanto, Conta é uma classe abstrata e não uma Interface.

Desculpa a confusão que eu criei, na hora de explicar, acabei falando de Interface sendo que Conta nesse caso é classe abstrata.

Se tiver mais duvida pode mandar =)

Show, Valeuzão! De verdade!

De nada =) Estamos juntos nessa. Amanhã pode ser você a pessoa que vai me ajudar a entender alguma coisa.

Bons estudos

Só pra complementar e pra eu não esquecer kkk A aula do link abaixo me ajudou mais ainda a entender o conceito https://cursos.alura.com.br/course/java-collections/task/14175

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software