Olá, Lucas! Como vai?
Entendo sua dúvida sobre o uso do override
e super
em Dart. Quando você utiliza o override
em uma função que está sendo sobrescrita, você está indicando que aquela função está substituindo a implementação da função na classe base.
No caso do super
, ele é utilizado para chamar a implementação da função na classe base. Quando você utiliza o super
em uma função que está sendo sobrescrita, você está chamando a implementação da função na classe base antes de executar o código adicional que você escreveu na função sobrescrita.
Portanto, quando você utiliza o super
em uma função que está sobrescrevendo outra função que também utilizou o super
, a função na classe base será executada primeiro, seguida pela função sobrescrita na classe derivada.
Por exemplo, suponha que você tenha uma classe base chamada Alimentos
com uma função chamada comer()
e uma classe derivada chamada Frutas
que sobrescreve a função comer()
. Se você utilizar o super.comer()
dentro da função comer()
em Frutas
, a implementação da função comer()
em Alimentos
será executada primeiro, seguida pela implementação da função comer()
em Frutas
.
Caso você não queira que o segundo override
seja executado, você pode simplesmente não utilizar o super
dentro da função sobrescrita em Frutas
.
Espero ter ajudado a esclarecer sua dúvida! Se tiver mais alguma pergunta, é só me dizer. Bons estudos!