Menu
Coddy logo textTech

A Palavra-chave parent::

Parte da seção Programação Orientada a Objetos do Journey de PHP da Coddy. Lição 22 de 91.

Quando uma classe filha herda de uma classe pai, às vezes você precisa acessar os métodos ou propriedades da classe pai diretamente. A palavra-chave parent:: permite que você chame a implementação da classe pai de dentro da classe filha.

Isso é especialmente útil em construtores quando o filho precisa inicializar as propriedades do pai enquanto também configura as suas próprias:

<?php
class Animal {
    public $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
}

class Dog extends Animal {
    public $breed;
    
    public function __construct($name, $breed) {
        parent::__construct($name);
        $this->breed = $breed;
    }
    
    public function describe() {
        return "$this->name is a $this->breed";
    }
}

$dog = new Dog("Max", "Labrador");
echo $dog->describe();

Saída:

Max is a Labrador

Ao chamar parent::__construct($name), a classe filha reutiliza a lógica de inicialização da classe pai em vez de duplicá-la. Sem essa chamada, a propriedade $name nunca seria definida.

Você pode usar parent:: para chamar qualquer método pai, não apenas construtores. Isso se torna particularmente importante quando você deseja estender o comportamento de um método em vez de substituí-lo completamente.

Ponto Chave: A palavra-chave parent:: fornece uma maneira de acessar a implementação da classe pai. É essencial para o encadeamento adequado de construtores e para construir sobre a funcionalidade herdada em vez de reescrevê-la.

challenge icon

Desafio

Fácil

Vamos construir um sistema de catálogo de produtos que demonstra como as classes filhas podem estender a funcionalidade dos pais usando a palavra-chave parent:: para encadear construtores corretamente e aprimorar métodos herdados.

Você organizará seu código em três arquivos:

  • Product.php — Defina uma classe Product que sirva como base para todos os produtos. Ela deve ter as propriedades públicas $name e $price. O construtor aceita um nome e um preço, definindo ambas as propriedades. Inclua um método getDetails() que retorna "[name]: $[price]".
  • ElectronicProduct.php — Defina uma classe ElectronicProduct que estende Product. Inclua o arquivo Product no topo. Esta classe adiciona uma propriedade $warranty (em meses). O construtor deve aceitar nome, preço e garantia — use parent::__construct() para inicializar o nome e o preço através do pai e, em seguida, defina a garantia você mesmo. Crie um método getDetails() que se baseia na implementação do pai: chame parent::getDetails() e anexe " (Warranty: [warranty] months)" a ele.
  • main.php — Inclua o arquivo ElectronicProduct. Você receberá três entradas: o nome do produto, o preço (como uma string para converter em float) e o período de garantia (como uma string para converter em um inteiro). Crie um ElectronicProduct com esses valores e imprima o resultado da chamada de getDetails().

Este desafio mostra o real poder do parent:: — não apenas para o encadeamento de construtores, mas também para estender o comportamento dos métodos. Seu ElectronicProduct reutiliza a lógica de formatação do pai e adiciona seus próprios detalhes por cima, evitando a duplicação de código e criando uma saída mais rica.

Experimente você mesmo

<?php
require_once 'ElectronicProduct.php';

// Ler entradas
$name = trim(fgets(STDIN));
$price = floatval(trim(fgets(STDIN)));
$warranty = intval(trim(fgets(STDIN)));

// TODO: Criar um ElectronicProduct com os valores de entrada
// e imprimir o resultado da chamada de getDetails()

?>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de PHP online