3.6. Orientação à Objetos em Dart: Classes Abstratas


Usamos a palavra chave abstract para impedir que uma classe possa ser instanciada.

Usamos a palavra chave abstract para impedir que uma classe possa ser instanciada. Esse é o efeito direto de se usar o modificador abstract na declaração de uma classe:

abstract class Animal {
  String nome;
  double peso; 

  Animal(this.nome, this.peso); 

  void comer(){
    print("$nome comeu");
  } 

  void fazerSom(){
    print("$nome fez som!");
  }
}

Para usá-la, basta colocar abstract antes da classe que quer tornar abstrata, assim, não poderá instanciá-la, mas pode-se usar ela como super classe para herdar algo.

Pode-se também declarar métodos nas classes abstratas sem declarar nada, sem nenhum corpo, ou seja, na parte void fazerSom() pode-se retirar o seu corpo, desta forma:

abstract class Animal {
  String nome;
  double peso; 

  Animal(this.nome, this.peso); 

  void comer(){
    print("$nome comeu");
  } 

  void fazerSom();
}

Porém, será obrigado a implementar ela nas classes que herdam a classe abstrata:

abstract class Animal {
  String nome;
  double peso; 

  Animal(this.nome, this.peso); 

  void comer(){
    print("$nome comeu");
  } 

  void fazerSom();
}
 
class Gato extends Animal {
  Gato(String nome, double peso): super(nome, peso); 

  void estaAmigavel(){
    return true;
  } 

  // Obrigado a implementá-lo
  @override
  void fazerSom(){
    print("$nome fez miau!");
  }
}

Mas aí você me pergunta: para que server esse trem? Bom, no código escrito acima, não faz sentido criar o objeto "Animal", pois eu só quero saber que tipo de animal é, entendeu?

O que, exatamente, vem a ser a nossa classe Animal? Eu só tenho dois animais gato e cachorro. Ela é uma classe que apenas idealiza um tipo, define apenas um rascunho.

Para o nosso sistema, é inadmissível que um objeto seja apenas do tipo Animal (pode existir um sistema em que faça sentido ter objetos do tipo Animal, mas no nosso caso não).

No próximo artigo iremos aprender a criar listas em Dart.


Todo os artigos postados destas séries (Dart Iniciante e Intermediário) foram baseados no https://www.udemy.com/curso-completo-flutter-app-android-ios/ e com alguns comentários retirados do livro "Dart: Up and Running by Kathy Walrath and Seth Ladd". Recomendo a todos a fazer o curso, pois estou aprendendo muito com este curso.
2538 Visualizações