Herança PHP

Resumo : neste tutorial você aprenderá sobre a herança do PHP que permite que uma classe reutilize o código de outra classe.

Introdução à herança do PHP

A herança permite que uma classe reutilize o código de outra classe sem duplicá-lo.

Na herança, você tem uma classe pai com propriedades e métodos, e uma classe filha pode usar o código da classe pai.

A herança permite que você escreva o código na classe pai e use-o nas classes pai e filha.

A classe pai também é chamada de classe base ou superclasse. E a classe filha também é conhecida como classe derivada ou subclasse.

Para definir que uma classe herda de outra classe, você usa a extendspalavra-chave.

Suponha que você tenha uma classe chamada BankAccountda seguinte forma:

<?php

class BankAccount
{
    private $balance;

    public function getBalance()
    {
        return $this->balance;
    }

    public function deposit($amount)
    {
        if ($amount > 0) {
            $this->balance += $amount;
        }

        return $this;
    }
}Linguagem de código:  HTML, XML  ( xml )

A BankAccountclasse possui a propriedade privada $balancee os métodos públicos getBalance()e deposit().

Para declarar que SavingAccountherda de BankAccount, você usa a extendspalavra-chave da seguinte maneira:

<?php

class SavingAccount extends BankAccount
{
}Linguagem de código:  HTML, XML  ( xml )

Neste exemplo, SavingAccountpode reutilizar todas as propriedades e métodos não privados da BankAccountclasse.

O seguinte cria uma nova instância da SavingAccountclasse, chama o deposit()método e mostra o saldo:

<?php

require 'SavingAccount.php';

$account = new SavingAccount();
$account->deposit(100);
echo $account->getBalance();
Linguagem de código:  HTML, XML  ( xml )

Neste exemplo, a SavingAccountclasse reutiliza as propriedades e métodos da BankAccountclasse.

Uma classe filha pode reutilizar propriedades e métodos da classe pai. Mas a classe pai não pode usar propriedades e métodos da classe filha.

Adicione propriedades e métodos à classe filha

Uma classe filha pode ter suas próprias propriedades e métodos. No exemplo a seguir, adicionamos a $interestRatepropriedade e setInterestRate()o método à SavingAccountclasse:

<?php

class SavingAccount extends BankAccount
{
    private $interestRate;

    public function setInterestRate($interestRate)
    {
        $this->interestRate = $interestRate;
    }
}Linguagem de código:  HTML, XML  ( xml )

Chamar métodos da classe pai

Para chamar um método da classe pai, você usa a $thispalavra-chave.

O exemplo a seguir define o addInterest()método que calcula os juros e os adiciona ao saldo:

<?php

class SavingAccount extends BankAccount
{
    private $interestRate;

    public function setInterestRate($interestRate)
    {
        $this->interestRate = $interestRate;
    }

    public function addInterest()
    {
        // calculate interest
        $interest = $this->interestRate * $this->getBalance();
        // deposit interest to the balance
        $this->deposit($interest);
    }
}Linguagem de código:  HTML, XML  ( xml )

No addInterest()método, chamamos o getBalance()método da BankAccountclasse para calcular os juros e o deposit()método para adicionar os juros ao saldo.

Junte tudo:

<?php

class BankAccount
{
    private $balance;

    public function getBalance()
    {
        return $this->balance;
    }

    public function deposit($amount)
    {
        if ($amount > 0) {
            $this->balance += $amount;
        }

        return $this;
    }
}

class SavingAccount extends BankAccount
{
    private $interestRate;

    public function setInterestRate($interestRate)
    {
        $this->interestRate = $interestRate;
    }

    public function addInterest()
    {
        // calculate interest
        $interest = $this->interestRate * $this->getBalance();
        // deposit interest to the balance
        $this->deposit($interest);
    }
}

$account = new SavingAccount();
$account->deposit(100);
// set interest rate
$account->setInterestRate(0.05);
$account->addInterest();
echo $account->getBalance();
Linguagem de código:  HTML, XML  ( xml )

Herança e UML

Você usa a seta aberta da classe filha para a classe pai para representar o relacionamento de herança. O diagrama UML a seguir mostra o relacionamento de herança entre as classes BankAccounte SavingAccount:

Resumo

  • A herança permite que uma classe reutilize o código de outra classe sem duplicá-lo.
  • Use a extendspalavra-chave para definir uma classe que herda de outra classe.
  • Uma classe que herda outra classe é chamada de subclasse, classe filha ou classe derivada. A classe da qual a subclasse herda é uma classe pai, uma superclasse ou uma classe base.
  • Uma subclasse pode ter suas próprias propriedades e métodos.
  • Use $thisa palavra-chave para chamar os métodos da classe pai a partir dos métodos da classe filha.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *