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 extends
palavra-chave.
Suponha que você tenha uma classe chamada BankAccount
da 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 BankAccount
classe possui a propriedade privada $balance
e os métodos públicos getBalance()
e deposit()
.
Para declarar que SavingAccount
herda de BankAccount
, você usa a extends
palavra-chave da seguinte maneira:
<?php
class SavingAccount extends BankAccount
{
}
Linguagem de código: HTML, XML ( xml )
Neste exemplo, SavingAccount
pode reutilizar todas as propriedades e métodos não privados da BankAccount
classe.
O seguinte cria uma nova instância da SavingAccount
classe, 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 SavingAccount
classe reutiliza as propriedades e métodos da BankAccount
classe.
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 $interestRate
propriedade e setInterestRate()
o método à SavingAccount
classe:
<?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 $this
palavra-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 BankAccount
classe 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 BankAccount
e SavingAccount
:
Resumo
- A herança permite que uma classe reutilize o código de outra classe sem duplicá-lo.
- Use a
extends
palavra-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
$this
a palavra-chave para chamar os métodos da classe pai a partir dos métodos da classe filha.