Cursos / Eletrônica / Programação Orientada a Objetos / Aula
A palavra super é mais uma das palavras reservadas da linguagem TypeScript que tem uma forte ligação com a herança. Veja abaixo algumas características:
A classe Transporte define um construtor que recebe como parâmetro a capacidade.
export class Transporte{
protected _capacidade: number;
public constructor(capacidade: number){
this._capacidade = capacidade;
}
}
A classe Terrestre não define nenhum construtor, porém herda de Transporte.
export class Terrestre extends Transporte{
private _numRodas: number;
public get numRodas() : number {
return this._numRodas;
}
}
Mesmo que Terrestre não defina um construtor, ele herda da sua classe mãe, sendo obrigado a utilizar na criação de um objeto. Vejamos um exemplo abaixo:
let transporte = new Transporte(6)
let terrestre = new Terrestre(5)
Vamos utilizar o mesmo exemplo anterior. Segue, abaixo, a classe Transporte que define um construtor que recebe a capacidade como parâmetro.
export class Transporte{
protected _capacidade: number;
public constructor(capacidade: number){
this._capacidade = capacidade;
}
}
A classe Terrestre agora tem seu construtor modificado, mesmo sendo filha da classe Transporte tem um construtor diferente.
export class Terrestre extends Transporte{
private _numRodas: number;
public constructor(numRodas: number, capacidade: number){
super(capacidade)
this._numRodas = numRodas;
}
}
O código acima ilustra um exemplo de herança, que faz uso da palavra-chave super. Vamos entender o que acontece quando usamos o comando super em tais contextos.
Primeiro, observe que o super é usado para chamar o método construtor da classe mãe. Na classe Terrestre, o super tem como parâmetro a capacidade exigida no construtor da classe Transporte. Portanto, a chamada super na classe Terrestre é no fundo a chamada ao construtor de Transporte.
Abaixo, segue o código da criação do objetos das duas classes:
let transporte = new Transporte(6)
let terrestre = new Terrestre(4,5)
Versão 5.3 - Todos os Direitos reservados