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

O que de fato o @override sobrescreve?

Olá, Estou iniciando em programação, conheci algumas linguagens e também o básico de Dart aqui na Alura. Mas tem muita coisa que ainda soa vago pra mim.

Eu gostaria de saber o que o @override sobreescreve de fato? Uma classe genérica do Flutter chamada "Widget"? Quando vou pra definição pelo VSCode não entendo muito o que tá ali.

E o que esse "@" indica sobre o comando override?

Obrigado :D

2 respostas
solução!

Olá Walter, tudo bem ?

Começando pelo @ isso muitas vezes chamamos de Anotação, então quando temos @override, dizemos que é uma anotação que indica que algo está sendo sobrescrito

E ai chegamos na sua segunda questão, o que está sendo sobrescrito? Um método!

Ou seja quando herdamos de StatelessWidget, Widget, StatefulWidget temos que sobrescrever o método build(), isto porque elas são classes abstratas e delegam a nós a criar o comportamento :)

Então podemos ler:

class ListaTransferencias extends StatelessWidget{
  @override
  Widget build(BuildContext context) {

Que estamos sobreescrevendo a função build que irá devolver um Widget e que recebe um BuildContext, a grande característica da sobrescrita de métodos é que não podemos modificar o retorno e os parâmetros da função =D

Um outro exemplo, que acredito que já viu em outras linguagens, mas que teremos no curso também é o:

@override
String toString()

Existem outras anotações como o @deprecated que indica que um método está depreciado, e deve ser evitado, por exemplo, poderíamos ter uma classe:

class Conta {

    @deprecated
    String mostraSaldo(){
        return "Saldo: 1000"
    }
}
`

Se fizermos um:

var conta = Conta():
conta.mostraSaldo();

Teremos um aviso de que : "mostraSaldo is deprecated and shouldn't be used"

Então é basicamente isso, @ irá indicar anotações, cada uma pode ter um sentido diferente, e o @override indica que iremos sobrescrever um método de uma classe mãe :)

Abraços e Bons Estudos!

Obrigado :D