Inheritance
- A class can inherit the methods and properties of another class by using the keyword 
extends in the class declaration.  
- It is not possible to extend multiple classes; a class can only inherit from one base class. 
 
- The inherited methods and properties can be overridden by redeclaring them with the same name defined in the parent class.  However, if the parent class has defined a method as final, that method may not be overridden. It is possible to access the overridden methods or static properties by referencing them with parent::.
 
<?php
    class Car{
        //Properties, by default its public
        var $color = 'green';
        // You can declare public prop. like this also
        public  $price  = 1000000;
        // Private
        private $engine = 'blah blah';
        // Protected available to Car Class, and all Sub Classes.
        protected $no_of_wheels = 4 ;
        //Methods
        function drive(){
            echo 'driving...';
        }
    }
    class TeslaCar extends Car {
        //Prop has $color, $price, $brand along with manufacturer
        public $manufacturer = 'Elon Musk';
        //Methods has drive() and selfdrive()
        function selfdrive(){
            echo 'Self driving is also available along with driving';
        }
    }
    $car_obj = new Car;
    $my_tesla = new TeslaCar();
    // Inherited method is available for the Teslacar
    $my_tesla->drive();
    // Extended or new method for the Tesla Car.
    $my_tesla->selfdrive();
    // public prop
    echo 'Color : ' . $car_obj->color;
    echo 'Price : ' . $car_obj->price;
?>
Method / Function Overriding
<?php
    class Car{
        //Properties, by default its public
        var $color = 'green';
        // Private
        private $engine = 'blah blah';
        // You can declare public prop. like this also
        public  $price  = 1000000;
        // Protected available to Car Class, and all Sub Classes.
        protected $no_of_wheels = 4 ;
        //Methods - public by default
        function drive(){
            // Accisible only within the class function's code.
            echo 'Engine : ' . $engine;
            echo 'driving...';
        }
    }
    class TeslaCar extends Car {
        //Prop has $color, $price, $brand along with manufacturer
        public $manufacturer = 'Elon Musk';
        // The default behaviour drive is being overridden / modified in the subclas
        function drive(){
            echo "Self Checking System.. Power ON <br>";
            echo "Starting Audio <br>";
            echo "driving...";
        }
        //Methods has drive() and selfdrive()
        function selfdrive(){
            echo 'Self driving is also available along with drive method';
        }
    }
?>