[Música] Opa pessoal tudo bem eh se vamos voltar aqui com o nosso lógico da última aula onde a gente tava vendo aí umas questões aí sobre a gente viu aí como a gente pode definir uma classe aqui no caso uma herança a gente define uma classe abstrata a gente viu aqui que ela não pode ser instanciada quando ela tá com uma abstrata a gente viu aqui essa clausa S também que é para a gente usa para delimitar as classes que vão poder dar dela usando permit a gente viu Que classes que tão que tão na cadeia de herança de uma classe no caso marcada como C eh elas TM que ser não seladas ou Sada ou então ela tem que ser fine ou seja não poder não pode ter nenhuma classe herdando dela vamos deixar com no sheld aqui pra gente poder retomar o nosso código a gente vai agora tem vamos resolver agora alguns problemas que a gente tem aqui ó o primeiro problema que a gente tá vendo aqui é a questão de chamar esses métodos que no caso a gente distanciou aqui um Manager usando o employee só que o que que acontece aqui a gente reservou o espaço de memória para employ o nosso nos colaboradores a gente vai ver aqui ele entende como colaborador então ele tem acesso às coisas do nosso colaborador porém aos propriedades que a gente definiu aqui no nosso Manager a gente não consegue acessar a menos que a gente faça isso aqui aí a gente tem acesso Mas a nossa ideia é trabalhar de uma forma genérica aqui Vamos então ver aqui como que a gente pode estar resolvendo essa questão vamos lá ã eu vou criar um método separado aqui pra gente poder est resolvendo Public detic void print employ beleza aqui ele vai imprimir o nosso colaborador e agora a gente vai fazer o seguinte vamos pegar aqui ó e a gente quer definir a gente quer pegar passar como parâmetro aqui nosso colaborador Beleza a gente passa ele como o parâmetro vamos tirar as propriedades aqui dele ó do nosso Manager colocar aqui a gente vai vai deixar bom acho que dá pra gente passar tudo inclusive vamos deixar aqui tudo acho só pra gente jogar num tudo só deixar as chamadas aqui só pra gente de repente tá se acostumando com essa questão aí de criar metodos paraa gente estar trabalhando com eles Beleza então a gente obviamente tem que vir aqui ó no nosso Manager e marcar ele colocar o nome da variável correto beleza ah aí a gente pode vir aqui e a gente faz o seguinte Hum acho que melhor a gente pensando melhor eu acho vamos deixar eles todos aqui hum não não vamos deixar aqui porque senão a gente não vai conseguir fazer um certo alguns que aproveitamento de código né e decisão do professor né mas a gente a gente se acerta a gente pode colocar inclusive aqui o nosso New Manager invés da gente criar aqui ó vamos já passar o new direto New Manager e aqui o new saves beleza e o que que a gente pode fazer uma solução pra gente resolver esse nosso problema seria fazer uma conversão fazer um t do nosso tipo para um outro tipo para isso a gente faz isso aqui ó a gente vem aqui temos o nosso Manager aqui a gente não precisa fazer o nosso porque é uma propriedade do colaborador Então até acabei fazendo de bobeira aqui a gente vem aqui ó remove o login não login tem que ter é o name que a gente tem que tirar vem aqui remove e vamos jogar o nosso name aqui para cima beleza e pra gente poder separar quer gente imprimir vamos fazer o seguinte vamos colocar aqui ó system. out println a vem aqui ó é employee ponto a gente tem esse método aqui ó get Class A gente vai dar um get Class aqui para poder separar os as nossas classes dessa forma aqui a gente fazend Quest aparentemente nosso código tá funcionando vai funcionar pro Manager mas quando F gente vai ver um outro problema aqui resolvemos um problema mas ganhamos outro e olha só ele imprimiu aqui nosso Manager só que ele tá com print aqui pode jogar print ali vamos imprimir de no PR gente não ficar com essa ó no caso aqui ele imprimiu aqui o nosso CL Manager Será que a gente tem aqui só pra gente que imprimir um nomezinho mais bonito PR nossa ó esse método aqui Cane vai pegar o nome da nossa classe só pra gente poder separar vamos até fazer o seguinte aqui acho que dá pr gente usar o nosso prft a gente vem aqui ó vamos dar um barra n vírgula para separar tem aqui 2 3 4 5 6 7 8 9 10 11 12 13 14 3 4 5 6 7 então porcentagem S aqui e acho que agora vai ficar bom pra gente ó vamos ver beleza a gente deu um barra n Ah não foi o Barra n que a outra barra Agora sim ó pode até aqui . a gente pode copiar isso aqui ó só pra gente tiar mais bem formadinho nosso código a gente sabe onde começa um e termina o outro olha só e aqui vamos agora focar no Nosso Erro ele tá falando que a classees não pode ser convertida no Manager obviamente Porque apesar estarem na mesma cadeia de herança eu só posso converter ele para um tipo mais eu só posso vir aqui ó fazer a conversão desse tipo por um tipo mais específico mas eu fazer a conversão de um desse tipo aqui para um outro tipo que não tem nenhuma ligação com ele não dá então paraa gente resolver esse problema a gente vai ter que ter uma verificação aqui no nosso código certo h a gente poderia ter um método separado onde a gente poderia colocar aqui em invés do colaborador colocar um para Manager outro para salesman mas a minha intenção é mostrar para vocês como que a gente pode tratar esse código quando a gente quiser fazer algumas conversões então o que que a gente pode vir aqui e fazer ó a gente pode ter um wif do nosso colaborador a gente não pode fazer isso aqui ó porque não vai funcionar e nem isso aqui ó nem virm aqui e dar um ponto Eos que também não funciona porque isso aqui é pra gente fazer comparação entre objetos e o outro Hum só para compara não é uma comparação que funciona para o igualdade não funciona de referente usar como comparação com objeto ou seja uma um assunto que a gente vai ver um pouquinho mais pra frente então para resolver o nosso problema tá na hora da gente ver uma palavrinha reservada aqui do Java que ela é justamente para nesse nosso objetivo só que não para employ no caso a gente tem que usar o nosso Manager aqui porque a gente tá fazendo para Manager para isso a gente usa a palavra ST off que ela verifica se uma se um objeto ela é uma Instância de um deter de uma determinada Classe A gente sabendo agora que eleva dessa determinada Instância a gente pode vir aqui ó e Opa e arrumar nosso código tirar Esso aqui daqui agora sim agora se a gente Peg a gente pode até fazer o seguinte ó pode eh dar um contrl X aqui ó imprimir isso aqui aqui beleza a gente vem aqui imprime dessa forma e ó se a gente for dar o nosso código agora sem problemas ó Manager o salesman ele não imprimiu porque a gente não definiu uma condição para verificar o salesman mas a gente já vai chegar nele ali agora o seguinte tem uma nova forma que ela entrou no Java na na zts ela entrou no Java 17 em vez de você ficar cada linha você fazer esse gest aqui você pode simplesmente vir aqui ó Manager Manager e aqui além dele verificar ele já vai gerar uma variável nessa Instância para você tá utilizando ó ele já gerou variável na Instância e você pode sair usando você fica com código aí mais simplificado Beleza se a gente for dar vai ver que vai funcionar da mesma forma ó Manager salesman Beleza agora a gente pode também fazer a mesma verificação aqui ó F employe inst salesman salesman e a gente poderia ter aqui um bloco justamente para isso aqui só que a gente pode fazer melhor ainda vai ter casos que o wif vai te atender bem para poder fazer essa verificação Mas você pode também fazer o seguinte ó invés de você ter um if você fazer dessa forma aqui ó com Ah só para mostrar que essa forma aqui ela entrou no Java 17 pelo menos nas LTS eu vou voltar aqui para versão 11 para vocês verem que o nosso código vai parar de funcionar e ele até dá a dica aqui ó set language level 16 que é no caso é uma versão não LTS aonde entrou esse recurso E aí a partir daqui V voltar para 21 a gente vai ver que ele funciona normalmente Beleza então agora pra gente tornar o nosso código ainda melhor a gente vai fazer o seguinte vamos aqui usar o nosso Switch a gente vai colocar aqui o nosso colaborador Vamos abrir as chaves e colocar aqui os nossos nosso Case ó casing Manager Manager e a gente abre e fecha Chaves aqui e podemos agora fazer o seguinte ó vir aqui e trabalhar com eles aqui a gente pode inclusive ó vamos vamos até usar definir as coisas aqui ó definir essas propriedades acho que só vamos ver coisas que a gente vai trabalhar eu coloquei as propriedades só PR um exemplo de herança mas eu vou ver algumas coisas que a gente vai mais utilizar acho que só o Code salary a gente vai vir aqui ó ponto set old Vamos colocar 1 2 3 aqui employee p set salary Vamos colocar nosso ele é o nosso Manager Então a gente vai colocar um salário aí de 5.
000 para ele beleza e ele tá reclamando ainda só que ele tá reclamando por ó ele tá falando que o nosso Switch não tá contemplando todas as nossas opções ele dá uma opção pra gente da gente vir aqui e colocar um default ele deu colocou o default só que ele tá pedindo pra gente até lançar uma exceção aqui mas a gente pode fazer melhor invés da gente colocar o default a gente pode vir aqui colocar um outro Case que vai contemplar o nosso fis Man e olha só só quando a gente colocou ele parou de reclamar vamos agora só arar isso aqui só pra gente só aqui ó get get sary Se bem que isso é bom vamos lá vamos deixar desse jeito a gente vai ter que ter coisas diferentes aqui no nosso código né eu tava pensando não colocar tanto código repetido aqui mas nosso caso aqui é só um paraf didático acho que não vai ter tanto problema eu vou copiar essas propriedades aqui ó só que eu tô ainda usando o nosso algumas aqui a gente vai vir aqui vamos setar o nosso Manager agora vamos vir aqui ó vamos copiar isso aqui aqui para dentro ele vai reclamar porque a gente tá num contexto onde ele não tem o nosso Manager a só tem aqui seta nosso se Man e agora vamos ver as nossas coisas aqui que a gente tem aqui de manager a gente tem que setar a comissão ainda do nosso Manager vamos fazer o seguinte ol get get commission a gente V aqui no nosso Manager Manager comission Vamos colocar uma comissão aqui nosso Manager de 1200 beleza salário aqui nos vai ser o Lucas e salário dele vai ser de 2800 e agora a gente vem aqui e vamos ver nosso ele tem um percentual por vendas Beleza então a gente pode setar aqui ó P per opa percent per Vamos colocar um C percentual de 10% e vamos imprimir esse percentual system. log pprint n salesman p percent per vamos trocar o código aqui só para ficar diferente ó Opa 456 tá feito podemos arrancar esse if daqui Beleza o nosso código aqui tá feito agora se seguinte se a gente for dar o nosso código aqui a gente vai ver que ele vai funcionar agora perfeitamente olha só forou ele tá imprimindo aqui as propriedades de cada um ó João Lucas beleza e uma coisa que acho que talvez vocês tenham percebido Quem lembra aí da aula do swiet Case vai lembrar que a gente quando a gente não contempla pro swit case e todas as opções ele pede um default que nem ele pediu pra gente aqui agora a pouco só que tem um detalhe no nesse caso aqui onde a gente tá verificando a Instância de um objeto Ele só tá permitindo a gente trabalhar sem o default porque a nossa classe ela é C excelente enfim não sei pronunciar como professor de de inglês S excelente professor de chava Mas vamos deixar o inglês aí para quem sabe se eu tiver pronunciando errado vocês me desculpem aí mas importante é entender que a nossa Voltando ao assunto Ele só tá permitindo isso aqui porque a nossa classe tá definindo como celada se a gente vier aqui ó e vamos comentar e vamos imaginar que a gente só tem a questão da nossa classe e abstrata e agora vamos aqui Apagar do nosso da nossa classe aqui ó Manager e agora vocês vão ver que ele vai passar a dar erro aqui ó e o erro dele é qual ele tá pedindo pra gente colocar um default porque tá falando que a gente não tá contemplando todos os possíveis cenários mas aí que tá ele justamente porque o que acontece quando a gente coloca define aqui a nossa classe como selada a gente é obrigado a definir classes que permitem que o que que vão estar eh autorizadas a herdar essa classe Então dessa forma o nosso Switch veio que como o nosso Switch conseguisse ter acesso a isso aqui verificar e ve ver que a gente que contemp todos os possíveis cenários ele vai ver que não precisa de um default e ele consegue passar por aqui sem problema nenhum beleza Hum isso aí já é uma uma vantagem que a gente pode ver de usar trabalhar com isso aqui aí é uma coisa talvez para você pensar ver se vale a pena não vale a pena para você agora vamos ver uma outra questão sobre ess sobre esse nosso sobre essa a nossa aula de herança Vamos criar um Record Vamos fazer um record de develop Vamos colocar aqui ó é o nosso Double Ah vamos chamar de extra extra e a gente vai falar que ele vai vir vai herdar do nosso colaborador a gente vem aqui ó obviamente a gente tem que lembrar de fazer isso só que vocês vão ver que a gente vai ter um problema eu já vou explicar o problema para vocês que foi intencional se a gente vi aqui der um t ele vai reclamar por quê vamos ver aqui ó ele tá falando que record não não pode ter cláusula extends Exatamente isso é uma limitação do Record ele não poder trabalhar com herança de uma de uma classe ou classe abstrata para ele e para vocês verem que realmente a gente poderia até tirar o abstrato deixar classe não vai funcionar Mas se vocês forem parar para pensar faz sentido porque o recorde a gente não pode por exemplo ter isso aqui ó porque Record não pode ter propriedades dentro dele a menos que essas propriedades sejam estáticas e o que é estático não tem como ser passado por heran ele não vai não vai entrar na na cadeia de herança se a gente colocar métodos estáticos porque as métodos estáticos é como se eles pertencessem a classe não a Instância e quando a gente tem herança a gente pode Muito provavelmente ter propriedades e o nosso recorde como a gente viu ele é imutável as propriedades tem que ser definidas aqui então a gente não pode trabalhar com herança de classes quando a gente trabalha com records tem a gente é obrigado a usar classes beleza só coloquei o record aqui só pra gente poder estar verificando isso para vocês verem uma uma terem conhecimento de uma limitação de se trabalhar com records agora vamos voltar aqui ó e voltar pro nosso código a gente viu aqui que a gente montou Nossa erança certinho ã a gente pode aqui também se a gente quiser que olha só a gente lembra vocês devem lembrar que eu comentei que quando a gente não define um Construtor na classe ela tem um Construtor default que é o Construtor sem argumentos Beleza agora e se eu viesse aqui na minha classe de colaborador e definisse um Construtor com argumentos Vamos só arrancar esse final daqui beleza só pra gente vai ficar com muito extenso aqui a gente deixa desse jeito ele já tá reclamando não é aqui o nosso problema é justamente aqui ó ele tá pedindo pra gente fazer um Construtor para ela mas faz todo sentido porque quando a a par partir do momento que a gente Define um Construtor aqui a Gente Tá informando ó essa classe para ela ser instanciada ela tem que ser instanciada a partir de construtores Então faz todo sentido que a nossa cadeia de herança passe a exigir o uso de Construtor então ó a gente vem aqui colocamos os nossos nossos métodos aqui nosso Construtor nas nossas classes e aqui ó a gente tá usando aqui a cláusula super porque justamente por a gente ter o Construtor aqui ele tem que ser chamado esse Construtor e para ele ser chamado ele usa keyw super Toda vez que você vê essa keyw super numa cadeia de herança você vai você pode ter certeza que isso aqui é para acionar algum comportamento da classe pai a mesma coisa a gente tem que fazer aqui ó vamos criar o nosso Construtor vamos Apagar vamos quebrar linha e Ok vamos só arrumar Nossa identação aqui beleza agora ele vai passar a reclamar aqui eu só minha intenção era só mostrar essa questão do Construtor pra gente não ter esse problema a gente tem que mudar o nosso código aqui e fugir um pouquinho do foco da nossa aula eu vou criar um Construtor sem argumentos aqui pra gente trabalhar pra gente poder voltar a utilizar ele aqui ó a gente não vamos pegar aqui esse aqui que a gente queer usar ó selecionamos nenhum e tá aqui feito ó beleza temos aqui Alem colaborador temos o Manager e aqui no sal a gente vem aqui e define o Construtor colocar aqui e nada impede também Desse nosso Construtor do super a gente vir aqui e trabalhar com definindo as nossas propriedades das nossas classes filhas vem aqui ó definimos um double percent per soldamos aqui um. per per sold e recebe percent per sold a gente poder ter um consultor com todos os argumentos e aqui a gente pode fazer a mesma coisa também ó vou até copiar aqui PR gente fazer um pouquinho mais rápido ó fazer o seguinte aqui prog vou dar um dis ponto dis ponto agora a gente apaga essas linhas vamos aqui um control G aqui do login aqui password ah ah tá falta definir os argumentos então a gente arruma isso aqui ó lading a gente coloca os nossos argumentos aqui ó string login e string password Double commission beleza e dessa forma a gente definiu aqui nosso Construtor Beleza agora isso aqui foi só para mostrar essa questão aqui de Construtor que a gente tem aí Alguns comportamentos que a gente pode trabalhar na nossa herança que eles podem acabar vind exigir coisas da gente uma outra coisa aqui que eu além de além gente tem essa questão aqui de de consultor Vamos mostrar agora a questão de sobrescrita vamos imaginar o seguinte cenário nossos colaboradores T um código de identificação no sistema beleza só que a gente quer diferenciar o Manager de salesman colocando um prefixo no código deles então pra gente resolver esse problema a gente vem aqui no Sales n a gente pode fazer assim ó Public string get code dessa forma aqui a gente tá sobrescrevendo a gente pode até colocar essa anotação aqui opcional mas pode ser interessante de repente para você cá quando você gera automaticamente esse código aqui para ele gera já com esse over Hide indicando que você tá sobrescrevendo Você pode vir aqui sobrescrever e colocar por exemplo aqui no seu sufixo ó colocar por exemplo nosso seres mesmo vamos colocar SL só que dessa forma aqui a gente só vai tá ignorando totalmente o nosso código e criando uma nova implementação a gente criou uma nova implementação e não tá usando antiga caso a gente queira usar algum comportamento da nossa antiga implementação a gente pode simplesmente fazer isso aqui ó super PG code beleza como a gente quer fazer uma concatenação a gente pode colocar aqui no return direto ó um get code a gente não consegue acessar por exemplo fazer isso aqui ó this.
code porque essa propriedade ela é privada da nossa classe P mas a gente já vai chegar nesse assunto aí vendo um jeitinho de resolver esse problema nosso Mas vamos só primeiro fazer a nossa sobreescrito aqui ó para vocês verem como é que vai trabalhar o nosso código ó e aqui vamos vamos chamar de MN E se a gente for dar agora a gente vai ver esse comportamento no nosso código Olha só o nosso código do manager da mn1 23 e o nosso código do Sales m tá SL 456 beleza isso aqui que a gente viu como eu falei o conceito aí de sobrescrita a gente tá sobrescrevendo o comportamento da nossa classe para definir outro comportamento utilizando ou não um comportamento o comportamento já padrão que a gente tem da nossa classe abstrata e é opcional vai de acordo com a sua necessidade agora vamos ver isso aqui PR Gente Tá acessando essas propriedades aqui ó porque a gente só tem acesso aos get sets a gente não tem acesso a isso aqui porque ele é privado Mas e se a gente precisar de acesso a isso aqui diretamente na nossa cadeia de herança a gente não pode vir aqui e definir isso aqui como público porque senão a gente quebra nosso encapsulamento e o Privado não tá resolvendo o nosso problema mas existe um outro modificador de acesso que a gente pode utilizar que a gente chama ele de protected enquanto público você tem acesso a ele em qualquer lugar do código privado Você só tem acesso a ele dentro da sua classe que definiu ess sua propriedade o protected ele é um pouco mais restritivo que o público mas também é um pouco mais dá um pouco mais de acesso que o que o seu Private o protected ele não permite acesso de fora da sua classe A menos que as suas a classe que esteja tentando fazer acesso a esse código esteja herdando a classe é uma condição aqui a gente vem aqui dá o dis P po Só que também existe uma outra questão que é até bom vocês estarem atentos Olha só para poder aqui já pirar o cabeção de vocês employ ponto a gente consegue acessar inclusive notificar os nossos as nossas propriedades aqui ó Ué mas eu não tinha falado que a gente não tinha acesso de fora é aí que tá o protected também tem uma outra sacada você consegue acessar propriedades quando você tá no mesmo package tanto é eu vou até criar um outro package pra gente poder ver isso essa esse comportamento ó vou colocar aqui ó domain um package de domain e vou pegar todas as nossas classes menos a Main e vou mover eles pro domain vamos dar Factor a gente pode dar o continue e agora a gente perdeu o acesso aqui ó ele tá falando ó code has protected access ele tá quase até falando ó replace Setter dá até sugestão porque agora a gente não tá mais no mesmo package do domain então eles não TM esse acesso beleza ã agora o que que a gente vai fazer ó é o seguinte vamos agora continuar vendo aqui outros comportamentos mas só para mostrar que o nosso código aqui tá rodando normal mesmo depois AC a troca do nosso modificador de acesso ó rodou normal sem problemas ã agora vamos vamos imaginar uma outra situação você quer um com a propriedade Você quer que os seus as suas classes elas TM uma propriedade que calcule todo o salário delas mas você quer que que elas seja obrigada a implementar você não quer que seja opcional que nem foi aqui quando a gente sobre escreveu esse comportamento ele foi opcional não você quer obrigar então o que que você pode fazer a gente pode vir aqui ó uma opção seria vir aqui e definir um método ó Public a gente coloca aqui ó Double p não espaço get full sary se a gente fizer isso aqui esse método vai passar a existir em toda a nossa cadeia Só que tem um problema o nosso full Seller do Man depende do percentual de venda e o no full salary do nosso Manager depende da comiss inclusive para a gente poderia colocar mais uma propriedade aqui ó Private Double porque a gente tem um percent de vendas Vamos colocar aqui ó amount e Vamos definir aqui ó vamos copiar isso aqui vamos colocar aqui ó só a gente sold amount isso pto sold amount sold amount vamos criar o get set aqui de lá também ó a gente vem aqui vamos criar o get set e tá feito Beleza agora vamos voltar aqui ó Então como que a gente vai fazer para obrigar essas nossas Class terem um método para poder retornar todo o salário do nosso colaborador sendo que a gente não tem garantia que eles vão implementar agora a gente vai ver o pulo do gato para resolver esse nosso problema a enquanto a classe quando ela é abstrata ela não pode ser instanciada se a gente vier aqui e definir um método como abstrato na onde eles está como abstrato ele não pode ter corpo você só vai definir que ele tá aqui só que a implementação desse método se torna responsabilidade de quemando ele só que só que um detalhe Se eu colocar aqui vamos imaginar aqui o seguinte situação só para vocês poderem ver uma outra possibilidade que pode acontecer aqui eu vou comentar de novo nosso aqui ó vou comentar ele aqui só para poder mostrar uma outra coisa para vocês quando a gente tem aqui uma cadeia de classes a gente tem uma uma prpr uma um método abstrato a gente é obrigado a implementar esse método ou a gente tem gente só tem duas opções no caso ele tem ele tem esse método abstrato a gente só tem vamos ver as opções ó uma opção que ele dá é implementar método outra opção seria marcar nosssa classe como abstrata no caso definir que ela também é uma classe abstrata a ela precisaria de alguém herdando ela para poder ser utilizada ela não ia poder ser instanciada Beleza então como a gente não quer que a nossa classe seja abstrata Vamos só voltar a nosso código aqui ó a gente não quer que a nossa classe seja abstrata a gente quer implementar um método então a gente vem aqui ó e ele vai forçar implementar o código e agora ó ele fez uma implementação só que tá uma implementação aí totalmente inútil no caso a gente gerou essa implementação facilita nossa vida mas ele não vai se importar ele só vai olhar Ah tem implementação tá lá então beleza então agora Aí cabe a gente como bons programadores vir aqui e fazer a nossa implementação ó vamos vir aqui ó no nosso código a gente quer o nosso salary né então a gente vai fazer o seguinte a gente vai dar retorno aqui dar um p salary mais a gente pega aqui ó o nosso sold a vezes percentual de venda dividido por 100 gente conseguir o percentual e somar no nosso salário e antes que a gente esqueça vamos vir aqui no nosso salesman Vamos colocar aqui ó Sales P7 so am Vamos colocar esse colaborador aqui vendeu fez de venda beleza e no nosso Manager retorno aqui é o nosso dis sary mais o nosso dis comission a gente tem aqui uma comissão Beleza agora se a gente rodar o nosso código a gente poderia até fazer o seguinte ó se a gente quisesse a gente poderia ter acesso aqui ó pon get full salary Por que a gente tem acesso aqui porque ele tem aqui ele só não tem implementação Mas ele tem mas como a gente tá garantindo que ele é abstrato então o Java sabe que ele vai ter que ter uma implementação por ele ser uma classe Então ele pode chamar confiando que vai ter um retorno Correto isso aqui beleza eu vou até deixar esse aqui aqui pra gente chamar ele eu só não deixei os outros por de se tratarem de de algum de algumas informações aí que a gente quer deixar diferente para diferenciar o nosso vendedor e nosso e nosso gerente que no caso nosso vendedor nosso Manager aqui chama João e nosso S chama Lucas mas é que o full salary tem que retornar para todos então vamos rodar o nosso código e ver o nosso resultado ó tá aqui ó a gente tem aqui Opa tivemos uma aqui o nosso Manager e ó agora ele tá imprimindo o nosso package aqui né então vamos nosso Manager arumar isso aqui ó dis psary que que ele fez isso aqui acho que tem alguma coisa errada no nosso código não Ah nunca não tá nem imprimindo né nunca queer funcionar só chamar assim não dá tem que imprimir né vem aqui system. int Alien rodamos o nosso código e agora a gente vai ver aqui a nossa comissão ó nosso valor ó é o 5000 mais a comissão 6.
What are the key takeaways?
Based on the transcript, here are the key points...