Aula 37
Como Adicionar Atributos a uma Classe Derivada no TypeScript (super)
Summary
Aula de TypeScript - Adicionando Propriedades
Nesta aula, vamos aprender como adicionar uma nova propriedade à classe Funcionário
, que será o salário, derivando da classe Indivíduo
. A seguir, estão os principais pontos abordados:
Estrutura das Classes
- A classe
Funcionário
estende a classeIndivíduo
, compartilhando seu código através da herança. - Um
Funcionário
possui uma propriedade adicional: o salário.
Adicionando a Propriedade Salary
-
Definição da Propriedade:
- A nova propriedade em
Funcionário
será um atributo do tiponumber
, chamadosalário
. - Será definidos como
private
para controlar o acesso à variável.
- A nova propriedade em
-
Construtor:
- Para inicializar o salário, criamos um construtor na classe
Funcionário
. - Utilizamos a palavra-chave
super
para chamar o construtor da classe baseIndivíduo
, passando o nome do indivíduo.
- Para inicializar o salário, criamos um construtor na classe
-
Implementação do Construtor:
constructor(nome: string, salario: number) { super(nome); // Chama o construtor da classe base this.salario = salario; // Inicializa o salário }
Saída e Uso da Classe Funcionário
- Um exemplo de uso da classe
Funcionário
é mostrado:const funcionario = new Funcionario('Marta', 123456); console.log(funcionario.cumprimentar());
Override de Metódos
- Também modificamos o método
cumprimentar
na classeFuncionário
:- Agora imprime o nome e o salário do funcionário, usando a interpolação de strings.
Compilação e Execução
- A validação e teste da implementação são feitas compilando o TypeScript (
tsc
) e rodando o arquivo JavaScript resultante.
Conclusão
- Aprendemos a usar a palavra-chave
super
, como definir um construtor na classe derivada e como adicionar novas propriedades. - A aula finalizou com a execução bem-sucedida do código, mostrando a saída esperada.
Até a próxima aula!
Video Transcript
Estamos de volta com mais uma aula de TypeScript.
Vamos aprender a adicionar uma propriedade ao funcionário, nesse caso vai ser o salário
do funcionário.
Essa vai ser uma propriedade adicional.
O indivíduo, por si próprio, não tem um salário, mas o funcionário que estende,
que deriva de indivíduo, tem um salário.
Para poder adicionar essa propriedade, nós vamos definir um construtor, constructor,
na classe funcionário e vamos aprender a palavra-chave super para poder chamar o construtor da
base-classe.
Tá certo?
Então vamos começar.
Olhando aqui no lado esquerdo da minha tela, tem o arquivo indivíduo.ts que contém a declaração
da classe indivíduo.
No lado direito da tela é o arquivo funcionário.ts que tem a declaração da classe funcionário.
Funcionário é uma classe que deriva da classe indivíduo porque a gente escreveu o funcionário
extends indivíduo.
Isto é, o código do indivíduo vai ser compartilhado pela classe funcionário.
Isto é, tem uma herança.
O funcionário vai ardá-lo indivíduo, o construtor, a função de comprimentar e o
guera para obter o nome do indivíduo.
Acho que o funcionário é um indivíduo.
Agora vamos fazer o seguinte, vamos adicionar uma nova propriedade ao funcionário exclusiva
ao funcionário que é o salário.
O indivíduo, por si próprio, não vai ter salário, mas o funcionário vai ter.
Então como fazer isso?
Bem, vamos fazer da maneira sem ser curta, que a gente aprendeu a fazer maneira curta
que o construtor do indivíduo, vamos fazer da maneira normal aqui.
Então vamos adicionar a propriedade, um atributo a essa classe, como é que faz?
Então o atributo vai ser o salário, vou dizer o nome salário.
Qual é o tipo desse atributo aqui?
A gente vai dar number, que é número, dessa maneira aqui.
Agora normalmente nós definimos atributos de um classe como com acesso privado.
Então vai ser público, mas normalmente a gente define privado, então vou adicionar
a palavra chave private, antes aqui do nome da variável.
Pronto, agora quando você fizer aqui, olha aqui no lado, aqui de embaixo da tela no
lado direito, tem um arquivo sobre classe.task, que tem um exemplo de como usar o funcionário
da linha 7 a 8, ele dá o new funcionário, passa o nome, não tinha que ter o nome do
indivíduo, mas agora também vai ter salário, então a gente vai ter que modificar esse construtor
aqui que veio do indivíduo.
Bem, funcionário estende, é erda do indivíduo, mas nós não podemos modificar o construtor
do indivíduo, porque o indivíduo não tem salário, então a gente vai ter que arrumar
o jeito de a gente reutilizar esse construtor do indivíduo da nossa classe que funcionara.
A maneira de fazer isso é a gente pode usar a palavra chave super para poder chamar a
função da base classe, nesse caso a fusão vai ser o construtor, então a gente vai fazer
o seguinte, nós vamos criar um construtor para o funcionário e esse construtor por
si próprio vai chamar o construtor do indivíduo para poder iniciar o nome, depois disso é
que a gente vai iniciar o salário desse próprio funcionário.
Então vamos aqui, vamos dar constructor, vou só definir a função sem nenhum acesso,
sem nada, então quando você define a função que tem o mesmo nome a função da base classe,
esse aqui vai dar o override, e em vez de chamar o construtor da base classe vai chamar
esse aqui, essa função aqui.
Agora, como a gente está chamando a base classe indivíduo, precisa de um nome, então
qual é o nome do indivíduo?
O nome vai vir de argumento aqui, então vai ser o nome do indivíduo como o string.
Agora, construtor do indivíduo precisa chamar para poder iniciar o nome do indivíduo,
então você tem que usar super, ponto, tá super sem nada, sem ponto, desculpa, super
dessa maneira e você passa aqui o argumento que o construtor do indivíduo da base classe
que ele precisa, nesse caso requer o nome, então o nome aqui, passado ao construtor
do funcionário, vai passar para o construtor do indivíduo aqui.
Depois de fazer isso, o que vai acontecer?
O des, ponto, nome vai ser setado com o nome do funcionário, depois disso aqui a gente vai
fazer setar o salário, des, ponto salário do próprio funcionário vai ser o salário
que você vai passar aqui como novo argumento do construtor, então vou chamar o salário
do tipo number e vou pôr aqui embaixo, o salário.
Então o segundo argumento aqui que a gente vai adicionar na linha 7 vai ser o salário,
então da marca aqui vai adicionar o salário 1, 2, 3, 4, 5, 6, deixa eu aumentar até
um pouquinho, então vai adicionar esse segundo argumento que é chamado da nova criação
de nova instância do funcionário, isso vai ser passado ao construtor, o construtor
agora tem dois argumentos do segundo sendo o salário, nesse caso 1, 2, 3, 4, 6 e esse
o salário vai ser iniciado aqui no des, ponto salário da instância do funcionário.
E nós usamos aqui o super, normalmente quando você tem uma classe que erra da base classe,
no construtor a gente normalmente chama primeiro de tudo o super para poder iniciar o objeto
com o construtor da base classe, se não tivesse essa parte ele não iniciaria o nome aqui e
dá problema, normalmente sempre ponho o super aqui e se você usar o des até no construtor
sem um super vai dar problema que ele não vai saber o que é, que as coisas estão definidas.
Então se lembre quando você tem uma classe que erra de outra classe, no construtor que
você dá o override aqui da classe derivada, normalmente ponha o super como a primeira
coisa que você faz, antes de setar todas as propriedades adicionais da classe derivada.
Por isso vamos testar o negócio aqui, legal. Agora antes de testar também o funcionário,
como a gente pode ver se realmente tem um salário aqui, vamos ver aqui, fazer o seguinte,
tem a função cumprimentar, vamos dar um override em vez de chamar a função cumprimentada
da base classe, vai chamar a própria função cumprimentar do funcionário, então vou dizer
cumprimentar e vou falar sou um funcionário, meu nome é, vou usar a backtake aqui, acento
grave aqui para poder usar a interpolação de string, botar desse ponto nome, note que
tem o underscore nome e como nome é protected você pode acessar diretamente da classe derivada,
se fosse private que ia na classe base só poderia ter acesso da classe indivíduo, mas
não na classe derivada então modificamos o private para protected aqui, meu nome é,
meu salário é, vou botar o desse ponto salário, vou salvar aqui, a gente pode colocar aqui
aqui, estamos com o acesso da função, e se quiser o retorno vai ser void, porque
não retorna nada, então esse vai dar o override, mesmo a função da base, então em vez de
chamar cumprimentada da base base vai chamar cumprimentada da classe funcionário, então
vamos testar isso, linha 7 e 8, vou comentar linhas 45, a gente não quer ver isso agora,
vou até comentar o import, não ele pode reclamar porque eu não estou usando a variável, o
import do estudante, então eu comentei isso também, então a gente espera que ele inicie
uma nova instância de um funcionário com o nome marta e salário 1.2.3.4.5.6, a gente
chama cumprimentada que vai falar, eu sou um funcionário, meu nome é marta, meu salário
é 1.2.3.4.5.6, vamos aqui no terminal, tsc para compilar, typescript compiler, vou
dar o node dist, barra, sobreclasses é o nome do arquivo, ponto js, então deu certo
como a gente esperava, sou um funcionário, meu nome é marta, meu salário 1.2.3.4.5.6,
tá bom?
Então aprendemos só para a palavra chave super, tá, para poder e definimos o construtor
na classe derivada que adiciona novas propriedades, então por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: