static void Main(string[] args) { Conta conta = new Conta(101, "Jiraya", 0.0); ContaEmpresa empresa = new ContaEmpresa(1001, "Kurama", 0.0, 400.0); //UPCASTING Conta conta2 = empresa; Conta conta3 = new ContaEmpresa(1002, "Kakashi", 0.0, 300.0); Conta conta4 = new ContaPoupanca(2001, "Hinata", 0.0, 0.01); // DOWNCASTING ContaEmpresa conta5 = (ContaEmpresa)conta3; conta5.Emprestimo(200.0); // ContaEmpresa conta6 = (ContaEmpresa)conta4; if (conta4 is ContaEmpresa) { //ContaEmpresa conta6 = (ContaEmpresa)conta4; ContaEmpresa conta6 = conta4 as ContaEmpresa; // Opção - as conta6.Emprestimo(150.0); Console.WriteLine("Emprestimo realizado com sucesso!"); } if (conta4 is ContaPoupanca) { // ContaPoupanca conta6 = (ContaPoupanca)conta4; ContaPoupanca conta6 = conta4 as ContaPoupanca; // Opção - as conta6.AtualizaSaldo(); Console.WriteLine("Poupança rendeu juros!"); } }
static void Main(string[] args) { Conta acc = new Conta(1001, "Alex", 0.0); ContaPessoaJuridica pj = new ContaPessoaJuridica(1002, "CB", 0.0, 1000); acc.Deposito(1000); //upcasting - conversao da superClasse; Conta acc1 = pj; ContaPoupanca cpj = new ContaPoupanca(1003, "Alex", 0.0, 1.50); pj.Deposito(1000); cpj.Deposito(1000); cpj.AtualizaSaldo(); cpj.Saque(1102); Console.WriteLine(pj); Console.WriteLine(cpj); Console.ReadKey(); }
static void Main(string[] args) { Conta conta = new Conta(4116, "Marcelo Souza", 0.0); ContaEmpresa contaEmpresarial = new ContaEmpresa(4117, "Elaine", 0.0, 500.0); // UPCASTING Conta conta1 = contaEmpresarial; Conta conta2 = new ContaEmpresa(4117, "Alex", 0.0, 200.00); Conta conta3 = new ContaPoupanca(4118, "Anna", 0.0, 0.01); // DOWNCASTING ContaEmpresa conta4 = (ContaEmpresa)conta2; conta4.Emprestimo(200.00); //ContaEmpresa conta5 = (ContaEmpresa)conta3; if (conta3 is ContaEmpresa) { //ContaEmpresa conta5 = (ContaEmpresa)conta3; ContaEmpresa conta5 = conta3 as ContaEmpresa; conta5.Emprestimo(190.0); Console.WriteLine("Emprestimo realizado!"); } if (conta3 is ContaPoupanca) { //ContaPoupanca conta5 = conta3 as ContaPoupanca; ContaPoupanca conta5 = (ContaPoupanca)conta3; conta5.AtualizaSaldo(); Console.WriteLine("ATUALIZA"); } Conta cc1 = new Conta(1001, "Alex", 500.0); Conta cc2 = new ContaPoupanca(1002, "Anna", 500.0, 0.01); cc1.Saque(10.0); cc2.Saque(10.0); Console.WriteLine(cc1.Saldo); Console.WriteLine(cc2.Saldo); }
static void Main(string[] args) { ContaCorrente Conta = new ContaCorrente(1001, "Priscila", 0.0); ContaEspecial ContaE = new ContaEspecial(1002, "Beto", 200.00, 500.00); // UPCASTING ContaCorrente Conta1 = ContaE; ContaCorrente Conta2 = new ContaEspecial(1003, "Helena", 100.00, 300.00); ContaCorrente Conta4 = new ContaPoupanca(9001, "Heitor", 100.00, 1.0); //DOWNCASTING //ContaEspecial ContaE1 = Conta2; /*Não aceita, pois o compilador verifica o tipo de variável <ContaCorrente>, * mesmo ela recedendo dados de subtipo <ContaEspecial> */ ContaEspecial ContaE1 = (ContaEspecial)Conta2; ContaE1.Emprestimo(200.00); //Conta2.Emprestimo(200.00); Não funciona, pois emprestimo é uma operacao da classe ContaEspecicial //ContaEspecial ContaE3 = (ContaEspecial)Conta4; // Não dara erro de compilação, mas gerará uma exceção, pois Conta4 é um objeto do Tipo ContaPoupança // e em tempo de execução da erro if (Conta4 is ContaEspecial) { // ContaEspecial ContaE3 = (ContaEspecial)Conta4; ContaEspecial ContaE3 = Conta4 as ContaEspecial; ContaE3.Emprestimo(150.00); } if (Conta4 is ContaPoupanca) { // ContaPoupanca ContaP = (ContaPoupanca)Conta4; ContaPoupanca ContaP = Conta4 as ContaPoupanca; ContaP.AtualizaSaldo(2.0); } Console.WriteLine("Hello World!"); }