none
Como implementar um método abstrato em uma classe filha? RRS feed

  • Pergunta

  • Eu abstraí um método de uma classe também abstrata.

    Mas não estou sabendo como implementar este método na classe filha. 

    Tá aqui o meu código, o que eu arrumo?

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Banco_Exercicio1
    {
        public class Cliente
        {
            

            public string Nome { get ; set ;}
            public string Rg { get ; set ;}
            public string Cpf {get ; set ;}

            public Cliente(string nome)
            {            
                this.Nome = nome;
            }
        }

        public abstract class Conta
        {
            public Cliente Titular { get; set; }
            public double Saldo { get; set; }
            public int Numero { get; set; }

            public Conta(Cliente nome)
            {
                this.Titular = nome;
            }

            public Conta() {}
              
            public abstract void Depositar(double Valor) ;
           

            public abstract void Saca(double Valor);   
            
        }

        public class ContaPoupanca : Conta // Essa linha apresenta erro: does not implement inherited abstract member
        {
            public ContaPoupanca(Cliente nome) : base(nome) { }

            public ContaPoupanca() {}
            
            public override void Saca(double Valor)
            {
                base.Saca(Valor + 0.10);     //Error: Cannot Call an abstract member
            }      
        }

        public class ContaCorrente : Conta
        {
            public ContaCorrente(Cliente nome) : base(nome) { }

            public ContaCorrente() {}
      
            public override void Saca(double Valor)
            {
                base.Saca(Valor + 0.05);    //Error: Cannot Call an abstract member
            }

            public override void Depositar(double Valor)
            {
                base.Depositar(Valor - 0.10);   //Error: Cannot Call an abstract member
            }
        }

        public class TotalizadordeContas 
        {
            public double ValorTotal {get ; private set ;}

            public double Soma (Conta conta)
            {
                ValorTotal += conta.Saldo;
                return ValorTotal; 
            }
        }

    }

    Como resolver e consertar estes erros? Muito obrigado. 




    • Editado PauloJoséBR quarta-feira, 9 de abril de 2014 20:34 Coloquei no lugar errado.
    quarta-feira, 9 de abril de 2014 20:13

Todas as Respostas

  • Respondendo como no Stack Overflow:

    Does not implement inherited abstract member

    Implemente Depositar em ContaPoupanca:

    public override void Depositar(double Valor) { ... }

    Cannot call an abstract member

    A mensagem já diz tudo. Como na classe base o método é abstrato, não tem o que ser chamado. Logo, você não pode utilizar base.

    quarta-feira, 9 de abril de 2014 20:51
  • Excluindo base, eu consegui corrigir os erros do "Cannot call an abstract member", porem não consegui corrigir o primeiro erro com a implementação do Depositar. ; 

    Além disso eu tenho uma dúvida, como fica a implementação dos métodos Depositar e Saque, sendo que eu abstraí o método da classe pai?(o conteúdo entre chaves).

    Muito obrigado. 


    quarta-feira, 9 de abril de 2014 21:07