Funcionamento de Herança para os métodos

Herança para os métodos

A herança funciona para os métodos durante a execução do programa, de maneira similar ao funcionamento para os atributos. A figura abaixo ilustra tal situação.

Quando o Objeto2 solicita a execução do metodoX() ao Objeto1, esse último inicialmente procura pelo método na própria classe C que o define. Caso não encontre, ele sai percorrendo sua árvore hierárquica. Nesse caso, em particular, o metodoX() é encontrado logo na primeira classe ancestral visitada, a ClasseB.

Figura 2 - Herança para os métodos

Descrição imagem

Sobrescrita de métodos

É um recurso que permite a uma subclasse ou classe filha fornecer uma implementação específica de um método que já é fornecido por sua superclasse ou classe mãe.

export class Transporte{

    protected _capacidade: number;

    public constructor(capacidade: number){
        this._capacidade = capacidade;
    }

    public exibirInformacoes(){
        console.log(`Capacidade: ${this._capacidade}`)
    }

}

A classe Terrestre, por padrão, herda o método exibirInformacoes() da classe Transporte. Porém, caso queira definir um comportamento específico, poderá sobrescrever o método, mantendo o mesmo nome e tipo de retorno. Assim, se um objeto da classe Terrestre chamar o método exibirInformacoes(), será exibido o comportamento definido na classe Terrestre.


export class Terrestre extends Transporte{

    private _numRodas: number;

    public exibirInformacoes(){
        console.log(`Rodas: ${this._numRodas}`)
    }

}

Super e métodos

  • O super() também pode ser utilizado para ter acesso aos métodos da superclasse;
  • Podemos ter uma implementação específica na subclasse para garantir o comportamento da superclasse.

Vejamos o exemplo abaixo, a classe terrestre especifica um comportamento próprio, porém garante o comportamento da classe mãe através do super.

export class Terrestre extends Transporte{

    private _numRodas: number;

    public exibirInformacoes(){
        super.exibirInformacoes();
        console.log(`Rodas: ${this._numRodas}`)
    }

}

Versão 5.3 - Todos os Direitos reservados