1
resposta

O tipo da variavel Gerente de Contas e Diretor

E ae, Guilherme.

Guilherme, fiquei com uma dúvida. Fiquei enroscado no código porque estava colocando o Diretor e o Gerente de Contas como do tipo 'Funcionario', como no exercicio anterior. Deixei comentado como "//Aqui 2" a maneira como eu estava fazendo. Poderia me explicar por favor o do porque ele não reconhece o Diretor e/ou Gerente de Contas com o tipo Funcionario (na verdade ele reconhece o tipo, mas não me deixa usar o atributo senha)? Fiz o teste colocando como tipo "Autenticavel" e roda que é uma beleza. Sei que ambos agora herdam dessa classe, mas que essa classe herda de "Funcionario", por isso a dúvida.

Forte abraço.

public static void BonificationCount()
        {
            BonificationManagement manBoni = new BonificationManagement();

            //Designer -  I did different of the outhers - Salary includ in Constructor
            Employee joao = new Designer("333.333.333-33");
            joao.Name = "João";

            //Aqui 1
        Director marcelo = new Director(5000, "555.555.555-55");
            marcelo.Name = "Marcelo";
            marcelo.Password = "123";

            //Aqui 2
        Employee pedro = new AccountManager(4000, "444.444.444-44");
            pedro.Name = "Pedro";
            pedro.Password = "456";

            Employee esdras = new Assistant(2000, "222.222.222-22");
            esdras.Name = "Esdras";
            esdras.Password = "25252";

            Employee vanessa = new Developer(3500, "111.111.111-11");
            vanessa.Name = "Vanessa";
            vanessa.Password = "aaa";

            BonificationManagement bm = new BonificationManagement();
            bm.Register(esdras);
            bm.Register(joao);
            bm.Register(pedro);
            bm.Register(marcelo);
            bm.Register(vanessa);

            Console.WriteLine("Total of the month's bonuses: " + bm.GetTotalBonification());

            InternSystem systemIntern = new InternSystem();

            systemIntern.Logon(pedro, "123");
            systemIntern.Logon(marcelo, "456");
            systemIntern.Logon(marcelo, "123");
        }
1 resposta

Olá Esdras!

Isso ocorre porque o tipo desse objeto ficou como Funcionario, e essa classe não tem o campo Senha, tanto que ao tentar instanciar um objeto do tipo FuncionarioAutenticavel, não ocorre o problema, pois é a partir desta classe que se aplica o campo Senha.

Ou seja, o tipo do objeto é definido pela primeira palavra da instrução.