JavaScript: Herança e métodos estáticos

As classes JavaScript suportam a herança, característica comum na orientação a objetos onde uma classe pode herdar comportamentos e características de outra classe.

Herança

As classes JavaScript suportam o recurso herança, característica comum na orientação a objetos onde uma classe pode herdar comportamentos e características de outra classe.

No exemplo abaixo temos a classe Juridico utilizando o recurso herança para herdar os comportamentos da classe Pessoa.

class Juridico extends Pessoa { /** * sobrescreve o método cpfIsValid da classe Pessoa */ cpfIsValid () { throw new Error('Esté método não pode ser acessado a partir desta classe') } /** * verifica se um número de cnpj é valido. * @param * @return */ cnpjIsValid (value) { // gera um erro se estiver sendo passado um número de cpf if (super.cpfIsValid(value)) { throw new Error('Número de CPF não é aceito') } ... } }

Na linha 1 foi utilizada a palavra extends e em seguida o nome da classe pai. Isso faz com que todos os recursos da classe Pessoa possam ser utilizados pela classe Juridico.

Na linha 16 é utilizado o método cpfIsValid precedido pela palavra super ao invés do this, isso significa que ele está acessando o método definido na classe pai, ignorando o método sobrescrito na própria classe que retorna uma exceção.

Métodos estáticos

Podemos definir em uma classe métodos estáticos que podem ser executados sem que a mesma tenha sido instanciada. Geralmente este recurso é utilizado para criar funções de utilidades.

No exemplo abaixo temos a classe Pessoa que possuí o método estático cpfIsValid, que valida se o número de cpf informado é valido.

/** * Entidade responsável por armazenar informações de uma pessoa física */ class Pessoa { /** * verifica se um número de CPF é valido * * @param value numero de cpf * @returns */ static cpfIsValid (value) { return /^\d\.\d\.\d\-\d$/.test(value) } } console.log(Pessoa.cpfIsValid('999.999.999-99')) // true

Na linha 11 é utilizada a palavra reservada static e em seguida o método e definido normalmente.

Na linha 16 o método cpfIsValid é utilizado sem a necessidade de instanciar a classe.

Confira também

Artigos relacionados