1
0
mirror of https://github.com/restoreddev/phpapprentice.git synced 2025-08-04 05:47:58 +02:00

Working on inheritance page

This commit is contained in:
Andrew Davis
2018-09-02 23:09:35 -05:00
parent 244ce2c01f
commit e404ab5489
4 changed files with 93 additions and 6 deletions

View File

@@ -0,0 +1,62 @@
<?php
// 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.
class Vehicle
{
public function drive()
{
echo "driving...\n";
}
}
class Truck extends Vehicle {}
// This does not 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";
}
}
// 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();
}
}
// 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";
}
}
// Outputs "driving..." and "driving even faster...".
$racecar = new Racecar();
$racecar->drive();

View File

@@ -33,11 +33,28 @@ class Phone2
}
}
// The "protected" and "private" keywords work a little differently, but we
// will learn more about "protected" when we discuss inheritance.
// However, they both prevent functions and properties from being accessed outside an object.
// The "protected" and "private" keywords work a little differently.
// They both prevent functions and properties from being accessed outside an object.
// However, a method or property marked "protected" can still be accessed by a child object.
class Phone3
{
private $number;
protected $caller;
public function setNumber($number)
{
$this->number = $number;
}
}
// In class "Smartphone", the "caller" property is accessible because the parent class
// has it marked as "protected". However, "Smartphone" cannot access the the "number" property
// because it is still listed as private.
class Smartphone extends Phone3
{
public function setCaller($caller)
{
$this->caller = $caller;
}
}