Carregando
Todos os artigos
Programação 1 min de leitura

Como Usar protected para Acessar Membros Privados de uma Base Classe no TypeScript

nbkhope

Em programação orientada à objetos, os atributos de um objeto são normalmente definidos com acesso privado para não serem lidos ou modificados diretamente. Em vez do acesso direto a propriedade, funções getter e setter são definidas para disponibilizar uma API de leitura e modificação, respectivamente.

Por exemplo, suponha que temos uma classe que representa um veículo:

1class Veiculo {
2  private marca: string;
3
4  constructor(aMarca: string) {
5    this.marca = aMarca;
6  }
7
8  obterMarca() {
9    return this.marca;
10  }
11
12  modificarMarca(novaMarca: string) {
13    this.marca = novaMarca;
14  }
15}

Podemos criar um veículo da seguinte maneira:

let carro = new Veiculo("Honda");

Mas o acesso e modificação da marca do veículo após sua construção não é permitida:

console.log(carro.marca);
carro.marca = "Toyota";

O compilador mostra o seguinte erro para ambas as expressões:

Property 'marca' is private and only accessible within class 'Veiculo'.

Vamos agora criar uma classe derivadas de um Veiculo: Carro. Veja o código abaixo:

1class Carro extends Veiculo {
2  imprimirMarca() {
3    console.log(this.marca);
4  }
5}

A classe Carro herda o constructor da base classe Veiculo, então não precisamos defini-lo novamente.

O metodo imprimirMarca vai dar erro porque this.marca não é acessível da classe derivada, Carro. A marca é uma propriedade da base classe Veiculo, com acesso private:

Property 'marca' is private and only accessible within class 'Veiculo'.

Para podermos ter acesso direto de uma propriedade da base classe na classe derivada, precisamos usar o modo de acesso protected:

1class Veiculo {
2  protected marca: string;
3
4  // ...
5}

Agora, a chamada de imprimirMarca de um objeto da classe Carro irá funcionar sem problemas. O acesso à propriedade marca da superclasse Veiculo é permitido.

Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:

https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb

Nos vemos lá!

Obrigado pela leitura!

Conhece alguém que vai gostar? Mande para essa pessoa.

Mais artigos

Leia a seguir

Comentários

Seja gentil e específico. Comentários com links de contas novas aparecem depois da análise de um moderador.