1
resposta

Dúvida sobre override

Quando eu uso o override para uma função base, como a sua de alimentos por exemplo, dai eu uso override em outra função por exemplo frutas, ai quando eu uso uma terceira vez e uso o super, ele realmente roda as 2 outras? Pra mim faz sentido ele rodar a função no qual eu usei o implements, mas ele roda antes, o override que eu fiz em Frutas. Tem como não rodar esse segundo override?

1 resposta

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!