1
resposta

Tipo do objeto que esta sendo instanciado

Quando eu coloco o new e o nome da classe o objeto passar a ser desse seguunda classe certo? no caso do exemplo ela seria a conta poupança logo deveria conseguir acessar o metodo dela

Conta c = new ContaPoupanca();

1 resposta

Oi Willyan, tudo bom?

Na verdade, para acesso o que importa mesmo é a forma com que declaramos a variavel c. Ou seja, nesse caso você acessaria tudo que está disponivel na classe Conta.

Na memoria temos uma instancia de ContaPoupanca então todos os métodos sobrescritos nessa classe serão utilizados como definido na classe ContaPoupanca, mas a gente só enxerga o que há na classe Conta =)

Como uma ContaPoupanca é uma Conta, a gente pode fazer a declaração da variavel enxergando-a como uma Conta apenas:

Conta c = new ContaPoupanca();

Mas, se você quiser enxergar métodos ou properties que só existem em ContaPoupanca, será necessario declarar a variavel como uma ContaPopuanca:

ContaPoupanca c = new ContaPoupanca();