Criar uma classe
class Funcionario {
}
Adicionar um construtor
class Funcionario {
constructor () {
}
}
Criar propriedades
class Funcionario {
constructor (nome, salario) {
this._nome = nome;
this._salario = salario;
this._bonificacao = 1.05;
}
}
Criar método
class Funcionario {
constructor (nome, salario) {
this._nome = nome;
this._salario = salario;
this._bonificacao = 1.05;
}
calculaSalarioFinal () {
return this._salario * this._bonificacao;
}
}
Propriedades estáticas
class Funcionario {
static contador = 0;
constructor (nome, salario) {
this._nome = nome;
this._salario = salario;
this._bonificacao = 1.05;
Funcionario.contador += 1;
}
calculaSalarioFinal () {
return this._salario * this._bonificacao;
}
}
Getters e setters
class Funcionario {
static contador = 0;
constructor (nome, salario) {
this._nome = nome;
this._salario = salario;
this._bonificacao = 1.05;
Funcionario.contador += 1;
}
calculaSalarioFinal () {
return this._salario * this._bonificacao;
}
get nome () {
return this._nome;
}
set nome (novoNome) {
this._nome = novoNome;
}
}
Herança
class Gerente extends Funcionario {
constructor (nome, salario) {
super(nome, salario);
this._bonificacao = 1.07;
}
}
class Diretor extends Funcionario {
constructor (nome, salario) {
super(nome, salario);
this._bonificacao = 1.09;
}
}
Sobrescrever um método
class Diretor extends Funcionario {
constructor (nome, salario) {
super(nome, salario);
this._bonificacao = 1.09;
}
calculaSalarioFinal (adicional=0) {
return super.calculaSalarioFinal() + adicional;
}
}
Simular um classe abstrata
class MinhaClasse {
constructor () {
if (this.constructor === MinhaClasse) {
throw new Error('"MinhaClasse" é abstrata');
}
}
}
Simular um método abstrato
class MinhaClasse {
constructor () {
if (this.constructor === MinhaClasse) {
throw new Error('"MinhaClasse" é abstrata');
}
}
meuMetodo () {
throw new Error('Método não implementado');
}
}
Referências
- https://cursos.alura.com.br/course/javascript-polimorfismo
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes