Aula 35
Como Acessar Atributos Definidos na Classe Base em uma Classe Derivada (protected)
Summary
Aula de TypeScript: Acessor Protected
Introdução
Nesta aula, abordaremos o acessor protected
em TypeScript, utilizando uma classe de exemplo chamada Estudante
, que herda de uma classe base chamada Indivíduo
.
Estrutura da Aula
-
Classe Estudante:
- A classe
Estudante
herda da classeIndivíduo
. - O método de cumprimento pode ser sobrescrito na classe
Estudante
, permitindo uma implementação personalizada.
- A classe
-
Método Cumprimentar:
- É declarado como público (
public
), embora o padrão no TypeScript seja público. - Implementação do método:
cumprimentar() { console.log(`Oi, sou um estudante, meu nome é ${this._nome}`); }
- É declarado como público (
-
Problema com Atributo Nome:
- O atributo
_nome
é declarado comoprivate
na classeIndivíduo
. - Propriedades
private
podem ser acessadas apenas dentro da classe onde são definidas. - Surge um erro ao tentar acessar
_nome
da classeEstudante
.
- O atributo
-
Solução: Alteração para Protected:
- Alteramos o atributo de
private
paraprotected
na classeIndivíduo
. protected
permite que o atributo seja acessado a partir de classes derivadas, como aEstudante
.
- Alteramos o atributo de
-
Resultado Final:
- O método de cumprimento agora consegue referenciar o atributo
_nome
, e a saída do terminal ao executar o código será:Oi, sou um estudante, meu nome é Pedro.
- O método de cumprimento agora consegue referenciar o atributo
Recapitulando
- O estudante redefine o método
cumprimentar
para adicionar um texto extra. - O atributo
_nome
deve serprotected
para ser acessível na classe derivada. - Esta modificação permite a reutilização e extensão do código nas classes que herdam da classe base.
Conclusão
A utilização do modificador de acesso protected
é essencial para permitir que atributos sejam acessados em subclasses. Esta aula mostrou como utilizar este recurso de forma eficiente. Até a próxima aula!
Video Transcript
Olá pessoal, de volta com mais uma aula de TypeScript.
Nesta aula vamos aprender sobre o acessor Protected, protegido.
Temos aqui a classe estudante, vamos começar só de um, vou focar só em um, não importa
ambos estão herdando de indivíduo.
Vamos focar aqui no estudante.
Vamos supor que o estudante comprime de uma maneira diferente.
Vamos supor que o estudante vai dizer, oi eu sou um estudante, meu nome é, não sei o que.
Agora a função método de cumprimentar já está definindo no indivíduo, mas o estudante
pode também definir seu próprio método cumprimentar, não precisa ter que obedecer
a implementação da classe indivíduo que é a classe base.
Então aqui na classe estudante você pode fazer o override, né?
Para você poder definir sua própria função de cumprimentar.
Então vamos lá, vamos definir como acesso public.
Na verdade o acesso é por padrão public público no TypeScript, implícitamente, mas
é sempre bom a gente explícitamente dizer o tipo de acesso de um método.
Cumprimentar a mesma coisa da linha 6.
Não vai retornar nada, então o polvoid vai dar o console log, então esse console log
aqui, vou dizer por exemplo, sou, oi sou, eu sou um ou um estudante, tá?
Meu nome é 10.undascorname.
Tá, agora olha aqui o que aconteceu.
Oi, eu sou um estudante, estou se referindo a 10.undascorname, agora o underscore nome
é um atributo que foi declarado na classe indivíduo que é a base, né?
Indivíduo é que declara o nome com propriedade privada, private.
Agora o estudante por si só, se próprio não declarou o nome.
Na verdade não precisa porque ele quer compartilhar o código, né?
Coisa que é comum a todos os indivíduos que é o nome.
O estudante tem um nome, o funcionário tem um nome, mas por que tá dando problema?
Vamos ver aqui, propriedade nome é privada e somente acessível de dentro da classe indivíduo,
esse é o problema.
Com propriedade privada, só é acessar, só é permitir o acesso de dentro da classe
indivíduo, como o estudante que na verdade é outra classe, né?
Embora o indivíduo, embora que seja herdado, vai dar problema.
Para poder corrigir isso é que vem aquele tipo de acesso chamado protected, protegido,
né?
Então aqui na classe base, linha 3, em vez de ser private, você põe protected.
O que é que significa protected?
É como se fosse privado, mas permite o acesso em classes derivadas, tá?
Essa é a diferença, agora você vai poder acessar o nome diretamente, propriedade
nome diretamente lá, tá?
Certo?
Agora a gente pode usar o cumprimentar no estudante e ele vai falar outra coisa.
Vamos testar?
Terminal, TSC, node.
Oi, eu sou um estudante, é aquela coisa mais que o estudante adiciona quando cumprimento,
meu nome é Pedro.
Tá?
Esse é o detalhe do tipo acessor protected, na propriedade aqui no attribute.
Recapitulando, nós redeclaramos cumprimentar, o estudante tem a sua própria função de
cumprimentar que é diferente do indivíduo.
Adicionamos o texto a mais e também referenciamos a propriedade nome que na verdade é declarada
na classe indivíduo.
Como o nome era private, acessor privado, ele só deixava acessar o nome de dentro da
classe indivíduo mas não pode acessar fora.
Então como é que a gente resolve esse problema do clases que erra de indivíduo mas não pode
acessar o atributo diretamente?
Você muda de private para protected, de privado para protegido, aquele atributo.
Tá?
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: