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.