Fácil PHP

Conta bancária com herança

Enunciado

Crie uma classe Conta com o método sacar(float $valor): void que apenas exibe uma mensagem. Depois, crie ContaCorrente extends Conta que sobrescreve sacar para exibir a mensagem com uma taxa de 1% sobre o valor. Instancie e chame sacar(100).

Requisitos

  • Conta deve ter um método sacar que recebe um valor e imprime algo.
  • ContaCorrente deve estender Conta e sobrescrever sacar.
  • A saída deve mostrar o valor original e a taxa de 1%.

Código inicial

<?php
class Conta {
    public function sacar(float $valor): void {
        // implemente
    }
}

class ContaCorrente extends Conta {
    // sobrescreva o método
}

$c = new ContaCorrente();
$c->sacar(100);

Saída esperada

Saque de R$ 100.00 | Taxa: R$ 1.00
Ver dica

Use parent::sacar($valor) para reaproveitar o comportamento base e depois adicione a taxa.

Mostrar solução
<?php
declare(strict_types=1);

class Conta
{
    public function sacar(float $valor): void
    {
        echo "Saque de R$ " . number_format($valor, 2) . PHP_EOL;
    }
}

class ContaCorrente extends Conta
{
    public function sacar(float $valor): void
    {
        parent::sacar($valor); // executa o saque padrão
        $taxa = $valor * 0.01;
        echo "Taxa: R$ " . number_format($taxa, 2) . PHP_EOL;
    }
}

$c = new ContaCorrente();
$c->sacar(100);

Passo a passo

  1. Definimos Conta com o método sacar, que apenas imprime o valor sacado.
  2. ContaCorrente usa extends Conta para herdar esse comportamento.
  3. Sobrescrevemos sacar em ContaCorrente.
  4. Dentro do novo método, chamamos parent::sacar($valor) para não duplicar a lógica de exibição.
  5. Calculamos a taxa de 1% e exibimos o valor formatado.
  6. Instanciamos ContaCorrente e chamamos sacar(100).

Por que funciona

A herança permite que ContaCorrente reutilize o método sacar da classe pai através de parent::. Ao sobrescrever, mantemos o comportamento base e adicionamos a regra específica da conta corrente. Isso evita repetição de código e segue o princípio de especialização.

Erros comuns

  • Esquecer de chamar parent::sacar($valor): a mensagem base não aparece, apenas a taxa.
  • Declarar sacar com assinatura diferente (ex.: sem float): o PHP pode emitir aviso de compatibilidade.
  • Não formatar o valor: number_format garante duas casas decimais.

Outra forma de resolver

Sobrescrever completamente sem chamar parent::, mas aí você duplicaria a lógica de exibição do valor.

Saída esperada

Saque de R$ 100.00
Taxa: R$ 1.00