048 – Extendendo uma Classe em Dart – Curso de FLUTTER e DART

Playlist: Curso Grátis de FLUTTER e DART Completo

Estendendo uma classe

Use extends para criar uma subclasse e super para se referir à superclasse:

classe de televisão
  void turnOn ()
    _illuminateDisplay ();
    _activateIrSensor ();
  
  // ···

classe SmartTelevision estende a televisão
  void turnOn ()
    super.turnOn ();
    _bootNetworkInterface ();
    _initializeMemory ();
    _upgradeApps ();
  
  // ···

Membros substitutos
As subclasses podem substituir métodos de instância, getters e setters. Você pode usar a anotação @override para indicar que está substituindo intencionalmente um membro:

classe SmartTelevision estende a televisão
  @sobrepor
  void turnOn () …
  // ···

Para restringir o tipo de um parâmetro de método ou variável de instância no código que é seguro para o tipo, você pode usar a palavra-chave covariant.

Operadores substituíveis
Você pode substituir os operadores mostrados na tabela a seguir. Por exemplo, se você definir uma classe Vector, poderá definir um método + para adicionar dois vetores.

Nota: Você deve ter notado que! = Não é um operador substituível. A expressão e1! = E2 é apenas açúcar sintático para! (E1 == e2).

Veja um exemplo de uma classe que substitui os operadores + e -:

classe Vector
  int final x, y;

  Vector (this.x, this.y);

  Operador vetorial + (Vector v) =MAIOR Vector (x + v.x, y + v.y);
  Operador vetorial – (Vector v) =MENOR Vector (x – v.x, y – v.y);

  // Operador == e hashCode não mostrado. Para detalhes, veja nota abaixo.
  // ···

void main ()
  v final = Vector (2, 3);
  final w = Vector (2, 2);

  assert (v + w == Vector (4, 5));
  assert (v – w == Vector (0, 1));

Se você substituir ==, também deverá substituir o getter de hashCode do objeto. Para obter um exemplo de substituição de == e hashCode, consulte Implementando as chaves do mapa.