Olá, bom dia! Estou com uma dúvida em relação sobre herança múltipla, gastei muito tempo ontem para descobri o problema do código e consegui encontrar, porém não soube explicar o porquê disto esta acontecendo, vamos lá. O exercício é o da aula 4 do curso C# parte 3, onde tenho que criar um sistema de autentificação, o link do código é este: https://repl.it/@jocygneto/ByteBank
Quando tento criar meu método estático na classe Program com os seguintes atributos
public static void UsarSistema()
{
SistemasInterno sistema = new SistemasInterno();
Funcionario roberta = new Diretor("159.753.398-04");
roberta.Nome = "Roberta";
roberta.Senha = "123";
Funcionario camila = new GerenteDeConta("326.985.628-89");
camila.Nome = "Camila";
camila.Senha = "abc";
sistema.Logar(roberta, "123");
sistema.Logar(camila, "abc");
}
Da erro dizendo: (quando estou com o mouse em cima do sumblinhado roberta.Senha e camila.Senha)
" 'Funcionario' não há uma definição para 'Senha' e não foi possivel encontra nenhum método de extensão 'Senha' acessivel que aceite um primeiro argumento do tipo 'Funcionario' (há uma diretiva de uso ou referencia assembly ausente?)."
e em sistema.Logar(roberta, "123"); sistema.Logar(camila, "abc"); o erro é:
Argumento 1: Não é possivel converter "ByteBank.Funcionario.Funcionario" para "ByteBank.Sistemas.Autenticavel".
já quando utilizo da seguinte forma:
public static void UsarSistema()
{
SistemasInterno sistema = new SistemasInterno();
Diretor roberta = new Diretor("159.753.398-04");
roberta.Nome = "Roberta";
roberta.Senha = "123";
GerenteDeConta camila = new GerenteDeConta("326.985.628-89");
camila.Nome = "Camila";
camila.Senha = "abc";
sistema.Logar(roberta, "123");
sistema.Logar(camila, "abc");
}
Não há erros e executa de forma normal. Por que isto acontece?
Se poderem me ajudar a esclarecer a dúvida ficarei muito agradecido.
Ao Guilherme, gostaria de deixar meus sinceros agradecimentos, devido sua sagacidade de ensinar, estou me tornando um dos melhores em C# na faculdade, valeu!