Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 6 da Aula 4 - Herança

Tenho na classe Conta um construtor, porém quando quero escrever a classe ContaPoupança herdando da classe Conta, o código não compila, pode me mostrar como ficaria?

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

namespace CaixaEletronico
{
    public class Conta
    {
        public int      Numero { get; protected set; }
        public double   Saldo  { get; protected set; }

        public Conta(int numero, double saldo)
        {
            this.Numero = numero;
            this.Saldo = saldo;

        }

        public void Deposita(double valorASerDepositado)
        {
            if (valorASerDepositado >= 0)
            {
                this.Saldo += valorASerDepositado;
            }
        }

        public void Saca(double valorASerSacado)
        {
            if (this.Saldo >= valorASerSacado && valorASerSacado >= 0)
            {
                this.Saldo -= valorASerSacado;
            }
        }

        public void Transfere(double valor,Conta destino)
        {
            this.Saca(valor);
            destino.Deposita(valor);

        }

    }
}

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

namespace CaixaEletronico
{
    class ContaPoupanca : Conta 
    {
    }
}

Aparece o seguinte erro: Error CS7036 There is no argument given that corresponds to the required formal parameter 'numero' of 'Conta.Conta(int, double)' CaixaEletronico

3 respostas
solução!

Como a classe mãe tem um construtor com argumentos, a filha é obrigada a chamá-lo. Como vc deixou a sua classe filha sem construtor, ela não está chamando...

Cria um construtor com argumentos na filha e chama o da mãe.

Opa, consegui, valeu!

namespace CaixaEletronico
{
    class ContaPoupanca : Conta 
    {
        public ContaPoupanca(int numero, double saldo) : base(numero,saldo) 
        {
            this.Numero = numero;
            this.Saldo = saldo;
        }

        public override void Saca(double valorASerSacado)
        {
            if (this.Saldo >= valorASerSacado && valorASerSacado >= 0)
            {
                this.Saldo -= valorASerSacado + 0.1;
            }
        }
    }
}

Só não esqueça de tornar sua classe ContaPoupanca public ;-P