1
0
mirror of https://github.com/restoreddev/phpapprentice.git synced 2025-03-15 20:19:39 +01:00
phpapprentice/content/12-classes-inheritance.md
2019-07-13 08:48:55 -05:00

1.8 KiB

+++ title = "Classes: Inheritance" description = "Extend your objects" tags = ["php", "extend", "inheritance"] slug = "classes-inheritance" previous = "classes.html" next = "classes-visibility.html" +++ In PHP, a class can extend another class, inheriting the parent class' properties and methods. To make a class a child of another, use the extends keyword after the class name.

<?php

class Vehicle
{
    public function drive()
    {
        echo "driving...\n";
    }
}

class Truck extends Vehicle {}

Using the drive method on the Truck class does not cause an error because Truck extends Vehicle.

$truck = new Truck();
$truck->drive();

Even though the child class inherits a parent class' properties and methods, the child can still override the parent.

class Tractor extends Vehicle
{
    public function drive()
    {
        echo "driving slowly...\n";
    }
}

The drive function now outputs "driving slowly..." instead of "driving...".

$tractor = new Tractor();
$tractor->drive();

A class can use a parent's property or method from the $this variable.

class Motorcycle extends Vehicle
{
    public function pushPedal()
    {
        $this->drive();
    }
}

The pushPedal method outputs "driving...".

$cycle = new Motorcycle();
$cycle->pushPedal();

If you override a parent's property or method, the $this variable will refer to the child's implementation of the property or method. To call the parent's property or method explicity, use the parent keyword.

class Racecar extends Vehicle
{
    public function drive()
    {
        parent::drive();

        echo "driving even faster...\n";
    }
}

The drive method on Racecar now outputs "driving..." and "driving even faster...".

$racecar = new Racecar();
$racecar->drive();