Monday, July 14, 2014

Class inheritance in PHP

Definition
Creating a new class by inheriting(combining) exist class is called inheritance. By doing this newly created class can access existing classes functions and variables. Here newly created class will be called as sub class or derived class and the class from where it inherited is called as base class or super class.

Example
Books.php:
<?php
class Books // Class name.
{
var $title='5'; // Class variables.
var $price=45;

function __construct() // Constructor.
{
$this->price=100; // Define books's default price is 100.
}

function setTitle($title) // Set title for book.
{
$this->title=$title;
}
function getTitle() // Get tiitle of book.
{
return $this->title;
}

function setPrice($price) // Set price for book.
{
$this->price=$price;
}

function getPrice() // Get price of book.
{
return $this->price;
}

public function name() // A public function.
{
return '<br />Ramasamy Kasi : Public funtion from Books(base) class.';
}

protected function mobileNumber() // A protected function.
{
return '<br />+91 95684575000 : Protected funtion from Books(base) class.';
}

private function password() // A private function.
{
return '<br />bossword : Private funtion from Books(base) class.';
}

protected function getPassword() // Call private function from the same class(Books).
{
return $this->password();
}

function __destruct() // Destructor.
{
echo '<br />Destructor for "'.$this->title.'" Called.'; // Will be called when, there is no further action exist for a object.
}
}
?>

EBooks.php:
<?php
class EBooks extends Books         // Creating new class by combining existing class.
{
var $link;

function setLink($link) // Set link for book.
{
$this->link=$link;
}

function getLink() // Get link for book.
{
return $this->link;
}

function mobileNumber() // Getting mobile number by directly calling base classes protected function 'mobileNumber'.
{
$mob_from_base=Books::mobileNumber();
return $mob_from_base.' - Through EBooks(Sub) Class.';
}

function password() // Getting password by calling one base classes public function 'getPassword'.
{
$pass_from_base=$this->getPassword();
return $pass_from_base.' - Through EBooks(Sub) Class.';
}
}
?>

index.php:
<?php
include 'Books.php'; // Include Books class file.
include 'EBooks.php'; // Include EBooks class file.

$tamil=new Books(); // Creating object.
$tamil->setTitle('Tamil Text Book'); // Set tittle.
$tamil->setPrice(150); // Set price.

$english=new Books();
$english->setTitle('Spoken English');
$english->setPrice(180);

$environment=new Books();
$environment->setTitle('Environmental Science');

$python=new EBooks();
$python->setTitle('Python for Beginners');
$python->setLink('http://python.books/python_begin.html'); // Set link.
$python->setPrice(85);

echo $tamil->getTitle() . ' : ' . $tamil->getPrice().'<br />'; // Display saved title and price.
echo $english->getTitle() . ' : ' . $english->getPrice().'<br />';
echo $environment->getTitle() . ' : ' . $environment->getPrice().'<br />';
echo $python->getTitle() . ' : ' . $python->getPrice() . ' : ' . $python->getLink() . '<br />';

echo Books::name(); // Calling a public function of base class(Books).
echo EBooks::mobileNumber(); // Calling a protected function of base class(Books) by calling public function of sub class(EBooks).
echo $python->password().'<br />'; // Calling a private function of base class(Books) by calling public function of sub class(EBooks).
?>

Output
Tamil Text Book : 150
Spoken English : 180
Environmental Science : 100
Python for Beginners : 85 : http://python.books/python_begin.html

Ramasamy Kasi : Public funtion from Books(base) class.
+91 95684575000 : Protected funtion from Books(base) class. - Through EBooks(Sub) Class.
bossword : Private funtion from Books(base) class. - Through EBooks(Sub) Class.

Destructor for "Python for Beginners" Called.
Destructor for "Environmental Science" Called.
Destructor for "Spoken English" Called.
Destructor for "Tamil Text Book" Called.

No comments:

Post a Comment

Learn JavaScript - String and its methods - 16

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>String and it's methods - JS&l...