Modificadores de acesso
public
O modificador public
pode ser utilizado em métodos e atributos, e com isso tornando-os acessíveis no escopo global.
public
é o modificador de acesso padrão ao declarar um atributo ou métodos.
IMPORTANTE: a utilização do public
(ou private
) é obrigatório quando for definir os atributos de uma classes via construtor:
class Collaborator {
constructor(public readonly name: string, public readonly lastName: string) {}
}
private
O modificador private
pode ser utilizado em métodos e atributos, e com isso tornando-os acessíveis apenas ao escopo (classe/arquivo) em que foi criado.
Exemplo
class Collaborator {
constructor(public readonly name: string, public readonly lastName: string) {}
}
class Company {
readonly name: string;
private readonly collaborators: Collaborator[] = [];
protected readonly cnpj: string;
constructor(name: string, cnpj: string) {
this.name = name;
this.cnpj = cnpj;
}
addCollaborator(collaborator: Collaborator): void {
this.collaborators.push(collaborator);
}
showCollaborators(): void {
for (const collaborator of this.collaborators) {
console.log(collaborator);
}
}
}
protected
Definição
O modificador de acesso protected
deixa a visibilidade de uma propriedade ou atributo para a class na qual foi definida e também nas subclasses.
Exemplo
class Collaborator {
constructor(public readonly name: string, public readonly lastName: string) {}
}
class Company {
readonly name: string;
protected readonly collaborators: Collaborator[] = [];
private readonly cnpj: string;
constructor(name: string, cnpj: string) {
this.name = name;
this.cnpj = cnpj;
}
public addCollaborator(collaborator: Collaborator): void {
this.collaborators.push(collaborator);
}
showCollaborators(): void {
for (const collaborator of this.collaborators) {
console.log(collaborator);
}
}
}
class Udemy extends Company {
constructor() {
super("Udemy", "11.111.111/0001-11");
}
popCollaborator(): Collaborator | null {
const collaborator = this.collaborators.pop();
return collaborator ? collaborator : null;
}
}