1
resposta

Criação de objetos a partir de classe que herda de um classe abstrata

Ao instanciar um novo objeto de um classe que herda as características/métodos de uma classe abstrata,

Exemplo: Conta é abstrata e ContaCorrente extends Conta

Conta conta = new ContaCorrente ContaConrrente conta = new ContaCorrente

Nesses exemplos acima, o resultado é o mesmo. As duas formas estão corretas?

1 resposta

Olá Isabela! Tudo bem?

Realmente, utilizando as duas formas você vai obter o mesmo resultado!

Quando utilizamos uma variável mais genérica (Conta) para armazenar um objeto mais específico(ContaCorrente), o objeto segue sendo do tipo específico, mas pode ser usado em algum método que aceita apenas tipos mais genéricos.

Existem situações em que isso pode ser útil para nós, como por exemplo, se precisamos utilizar um método de outra classe que recebe uma Conta como parâmetro. Utilizar um tipo mais genérico no parâmetro desse método nos faria poder utilizar tanto uma ContaPoupanca quanto uma ContaCorrente.

Nesse caso realmente não nos trouxe muita diferença o uso do tipo específico ContaCorrente ou do tipo mais genérico Conta... Mas em outros casos isso poderia trazer sim diferenças no uso dessas classes.

Mas de forma geral, utilizamos a forma ContaCorrente conta = new ContaCorrente, com os tipos específicos sendo usados com variáveis de seu tipo, até que seja realmente necessário utilizar dessa forma: Conta conta = new ContaCorrente .

A explicação te ajudou a entender melhor?

Se ficar interessada em ver um pouco mais a respeito, te recomendo um outro tópico que tivemos com uma colega aqui no fórum a respeito desses tipos genéricos e específicos: Link do post sobre tipos específicos e genéricos

Se eu puder te ajudar em mais alguma coisa, é só falar! 😀

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