🤔 Conhece a herança?

Inheritance permite-nos criar novas classes que reutilizam, estendem e/ou modificam o comportamento das classes pré-existentes. A classe pré-existente é chamada superclasse e a nova classe que estamos criando é chamada de classe derivada. No Dart, podemos herdar apenas uma superclasse, mas a herança é transitiva. Se a class Hatch é derivada da class Car e esta classe é derivada da class Vehicle, então a Hatch será derivada da Vehicle. Use extends para criar classe derivada, e super quando quiser se referir à superclasse.

Quando class Car extends Vehicle, todas as propriedades, variáveis, funções implementadas em class Vehicle estarão disponíveis em class Car.

Também é possível sobrescrever funções de superclasse.

Então: Você usa extends quando quer criar uma versão mais específica de uma classe.

2⃣️ Usando implementos

Suponha que você quer criar sua própria classe Carro, sem herdar todas as propriedades, variáveis e funções da classe Veículo, mas você quer herdar apenas o tipo de Veículo. Para isso, a classe Car deve implementar a interface Vehicle.

Dart permite implementar múltiplas classes ou interfaces.

✍️ Exemplo

Imagine que você precisa implementar uma ave e um pato, ambos são animais, mas a ave só pode voar e o pato pode voar e nadar. Vamos fazer isso usando o que sabemos até agora.

Primeiro, vamos criar superclasse e os comportamentos:

Agora, vamos criar Bird e Duck, implementando comportamentos adequados:

Nota, que usando implements tivemos que implementar fly e swim funções, repetindo código! Não foi possível herdar as implementações de comportamento desta forma. Existe uma maneira de reutilizar o código para estes comportamentos? Sim, veremos a seguir!

3⃣️ Usando com

Mixin é um tipo diferente de estrutura, que só pode ser usada com a palavra-chave with e é usada para incluir trechos de código comuns, eu diria, reutilizar o código.

Mixins são uma forma de reutilizar o código de uma classe em múltiplas hierarquias de classe (dartlang.org).

Aqui está como mixins realizam a implementação anterior:

Pode substituir abstract class a mixin se preferir.

Mixins são uma forma de abstrair e reutilizar uma família de operações e estado, é semelhante à reutilização que se obtém ao estender uma classe, mas não é de múltiplas heranças, ainda há apenas uma superclasse. Eles funcionam colocando a implementação mixin em cima da superclasse para criar uma nova classe. No exemplo acima, é possível reescrever uma função, mixins permite isso.

✌️Thanks

Essa foi minha primeira história em Medium, espero que você tenha gostado 😃.

Gostaria de agradecer ao Romain Rastel pela incrível história sobre mixins, aconselho-o a ler para entender ainda mais sobre este assunto.

Ainda perguntas, sinta-se à vontade para perguntar abaixo.

Deixe uma resposta

O seu endereço de email não será publicado.