static void Main(string[] args) { // criamos 2 objetos do tipo Account e BusinessAccont // os argumentos Account acc = new Account(1001, "Gilvan", 0.0); BusinessAccont bacc = new BusinessAccont(1002, "Lucas", 0.0, 500.0); Console.WriteLine("UPCASTING, que é conversão da subclasse pra superclasse"); // Casting é converter tipo de variáveis representa em () // a variavel Account recebe um objeto BusinessAccont Account acc1 = bacc; Account acc2 = new BusinessAccont(1003, "Matheus", 100.00, 500.00); Account acc3 = new SavingsAccount(1004, "Sandra", 50.0, 0.01); Console.WriteLine("DOWNCASTING, que é conversão da superclasse pra subclasse"); Console.WriteLine("Exemplo 1 "); // BusinessAccont acc4 = acc2 ele mostra erro na conversão // vmos ter de converte() Account em BusinessAccount BusinessAccont acc4 = (BusinessAccont)acc2; // agora posso fazer a chamada do empretimo acc4.Loan(100.0); // se eu tentar de outro jeito abaixo ele não vai mostrar o loan // acc2. Console.WriteLine("Exemplo 2 "); //ele mostra erro //BusinessAccont acc5 = acc3; // mesmo que eu converta com casting ele mostra sem erro //mais quando copilo ele mostra o erro // BusinessAccont acc5 = (BusinessAccont)acc3; // lembre que os objetos pode ser de tipo diferente // temos que fazer uma tratativa // vamos usaar o operador is e depois as //testo abaixo se a varivavel acc3 é uam instancai de BusinessAccont if (acc3 is BusinessAccont) { // a conversão pode ser de 2 maneiras ou referência // BusinessAccont acc5 = (BusinessAccont)acc3; BusinessAccont acc5 = acc3 as BusinessAccont; acc5.Loan(200.0); Console.WriteLine("Loan"); } if (acc3 is SavingsAccount) { // a conversão pode ser de 2 maneiras // SavingsAccount acc5 = (SavingsAccount)acc3; SavingsAccount acc5 = acc3 as SavingsAccount; acc5.UpdateBalence(); Console.WriteLine("Update!"); } }
static void Main(string[] args) { Console.WriteLine("faça um depoisito ! "); BusinessAccont account = new BusinessAccont(2536, "gilvan", 250.0, 300.0); Console.WriteLine(account.Balance); // account.Balance = 200.0; este atributo não pode receber valor }
static void Main(string[] args) { Console.WriteLine(); Console.WriteLine("Exemplo 1 Account acc1"); //os argumentos Account acc1 = new Account(1001, "Gilvan", 100.0); Console.Write(acc1.Number); Console.Write(" , " + acc1.Holder); Console.Write(" , " + acc1.Balance); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Exemplo 2 Account acc2"); Account acc2 = new BusinessAccont(1002, "Lucas", 150.00, 500.00); Console.Write(acc2.Number); Console.Write(" , " + acc2.Holder); Console.Write(" , " + acc2.Balance); // Console.WriteLine(" , " + acc2.); // obs que instaciamos mais não visualizamos pela superclasse LoanLimit Console.WriteLine(); Account acc3 = new SavingsAccount(1003, "Matheus", 300.00, 0.01); Console.WriteLine(); Console.WriteLine("Exemplo 3 Account acc3"); Console.Write(acc3.Number); Console.Write(" , " + acc3.Holder); Console.Write(" , " + acc3.Balance); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Exemplo 4 SavingsAccount sac"); SavingsAccount sac = new SavingsAccount(1004, "Sandra", 250.0, 0.01); Console.Write(sac.Number); Console.Write(" , " + sac.Holder); Console.Write(" , " + sac.Balance); Console.Write(" , " + sac.InterestRate); Console.WriteLine(); // obs que instaciamos mais não visualisamos pela subclasse e visualizamos InterestRate }