Skip to content

Modificadores de Acesso

Os modificadores de acesso são fundamentais em linguagens orientadas a objetos, pois controlam a visibilidade e o acesso aos membros de uma classe (como propriedades e métodos) de outras classes. TypeScript, ampliando as capacidades de JavaScript, introduz os conceitos de modificadores de acesso para ajudar a estruturar o código de maneira mais segura e mantida. Vamos explorar os três principais modificadores de acesso em TypeScript: public, private e protected.

1. public

O modificador public é o mais aberto dos três níveis de acesso. Membros marcados como public são acessíveis de qualquer lugar, sem restrições. Este é o nível de acesso padrão para membros de classe em TypeScript se nenhum modificador de acesso for explicitamente especificado.

Exemplo:

typescript
class Car {
  public engine: string;

  constructor(engine: string) {
    this.engine = engine;
  }

  public startEngine() {
    console.log(`The engine ${this.engine} has started.`);
  }
}

const car = new Car("V8");
car.startEngine(); // Acessível publicamente

2. private

O modificador private restringe o acesso ao membro da classe de modo que ele não possa ser acessado ou modificado de fora da própria classe. Isso é útil para esconder detalhes de implementação e proteger os dados da classe.

Exemplo:

typescript
class Car {
  private engine: string;

  constructor(engine: string) {
    this.engine = engine;
  }

  private startEngine() {
    console.log(`The engine ${this.engine} has started.`);
  }
}

const car = new Car("V8");
// car.startEngine(); // Erro: 'startEngine' é privado e acessível apenas dentro da classe 'Car'.

3. protected

O modificador protected é semelhante ao private, mas permite que o acesso aos membros da classe seja feito também pelas classes derivadas (subclasses). Isso facilita a criação de uma base de classe com detalhes que devem ser ocultos do mundo externo, mas ainda acessíveis por classes herdeiras.

Exemplo:

typescript
class Vehicle {
  protected make: string;

  constructor(make: string) {
    this.make = make;
  }
}

class Car extends Vehicle {
  constructor(make: string) {
    super(make);
  }

  displayMake() {
    console.log(`This car is made by: ${this.make}`);
  }
}

const myCar = new Car("Toyota");
myCar.displayMake(); // Funciona, 'make' é protegido e acessível dentro da classe derivada
// console.log(myCar.make); // Erro: 'make' é protegido e não acessível externamente.

Conclusão

Os modificadores de acesso public, private, e protected são ferramentas essenciais para qualquer desenvolvedor TypeScript, permitindo que eles controlem como os componentes de suas classes são expostos e interagem com o restante do sistema. Utilizar corretamente esses modificadores pode ajudar a garantir a integridade dos dados e a encapsulação do código, dois princípios fundamentais da programação orientada a objetos.