मुख्य कंटेंट तक स्किप करें

Inheritance in php

Ayesha
EditReport

Inheritance lets a class inherit properties and methods from another class. The child class extends the parent class.

Video Explanation

Basic Inheritance

<?php
class Animal {
public $name;

public function __construct($name) {
$this->name = $name;
}

public function speak() {
echo "{$this->name} makes a sound.";
}
}

class Dog extends Animal {
public function speak() {
echo "{$this->name} barks!";
}
}

$dog = new Dog("Rex");
$dog->speak(); // Rex barks!
?>

Inheriting Properties and Methods

The child class automatically inherits all public and protected members of the parent:

<?php
class Vehicle {
public $brand;
public $speed;

public function __construct($brand, $speed) {
$this->brand = $brand;
$this->speed = $speed;
}

public function describe() {
echo "{$this->brand} runs at {$this->speed} km/h.";
}
}

class Car extends Vehicle {
public $doors;

public function __construct($brand, $speed, $doors) {
parent::__construct($brand, $speed);
$this->doors = $doors;
}

public function describe() {
parent::describe();
echo " It has {$this->doors} doors.";
}
}

$car = new Car("Honda", 180, 4);
$car->describe();
// Honda runs at 180 km/h. It has 4 doors.
?>

The parent:: Keyword

Used to call the parent class's constructor or methods:

<?php
class Shape {
public $color;

public function __construct($color) {
$this->color = $color;
}

public function info() {
echo "Color: {$this->color}";
}
}

class Circle extends Shape {
public $radius;

public function __construct($color, $radius) {
parent::__construct($color); // call parent constructor
$this->radius = $radius;
}

public function info() {
parent::info();
echo ", Radius: {$this->radius}";
}
}

$c = new Circle("red", 5);
$c->info(); // Color: red, Radius: 5
?>

Method Overriding

A child class can override a parent method with the same name:

<?php
class Bird {
public function move() {
echo "Birds fly.";
}
}

class Penguin extends Bird {
public function move() {
echo "Penguins swim instead.";
}
}

$p = new Penguin();
$p->move(); // Penguins swim instead.
?>

Abstract Classes

An abstract class cannot be instantiated and may contain abstract methods that must be implemented by child classes:

<?php
abstract class Shape {
abstract public function area(): float;

public function describe() {
echo "This shape has area: " . $this->area();
}
}

class Rectangle extends Shape {
public function __construct(
private float $width,
private float $height
) {}

public function area(): float {
return $this->width * $this->height;
}
}

$rect = new Rectangle(5.0, 3.0);
$rect->describe(); // This shape has area: 15
?>

The final Keyword

Prevents a class from being extended, or a method from being overridden:

<?php
class Base {
final public function lock() {
echo "Cannot override this.";
}
}

// class Child extends Base { } // Error if you try to override lock()
?>
<?php
final class Singleton {
// This class cannot be extended
}
?>

Multilevel Inheritance

php supports multilevel inheritance (A → B → C):

<?php
class A {
public function hello() { echo "Hello from A"; }
}

class B extends A {
public function world() { echo "Hello from B"; }
}

class C extends B {
public function greet() {
$this->hello(); // inherited from A
$this->world(); // inherited from B
}
}

$obj = new C();
$obj->greet();
?>

Note: php does not support multiple inheritance (a class cannot extend more than one class). Use interfaces or traits to achieve similar results.

Telemetry Integration

Completed working through this block? Sync progress to workspace.