It is a sequel to my PHP OOP Part-1.Here I am going to talk about parent constructor, static classes, method overriding, abstract classes
1-Parent Constructor
<?php
class Student{
public $age;
public $name;
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
public function profile()
{
# code...
echo "His name is {$this->name} and age is {$this->age}";
}
}
Here we take 2 class and have 2 properties assign the value in constructor and echo them in profile method.
Then we
class Adminstration extends Student{
public $grade;
public function __construct($name,$age,$grade){
$this->grade=$grade;
parent::__construct($name,$age);
}
public function profile()
{
echo "His name is {$this->name} and age is {$this->age} and
grade is {$this->grade}";
}
}
$admin=new Adminstration("Tanzim",25,4);
$admin-> adminprofile();
Here we see we extend the student class with Administration class in Administration class we assign a new property $grade and then inside construct method we make use of parent::construct to access properties inside constructor method of Student which is parent class here.
2.Static Classes
<?php
class Student{
public static $age=15;
public static function profile(){
echo "His age is ".self::$age;
}
}
echo Student::$age;
echo Student::profile();
?>
Static properties and methods are what we can access without instantiating classes like here age is a static property and profile is a static function.
We can just access property just by
echo Student::$age;
public static function profile(){
echo "His age is ".self::$age;
}
echo Student::profile();
To access any property inside a static function we need to use self keyword.
<?php
class Student{
public $age;
public $name;
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
public function profile()
{
# code...
echo "His name is {$this->name} and age is {$this->age}";
}
}
class Adminstration extends Student{
public $grade;
public function __construct($name,$age,$grade){
$this->grade=$grade;
parent::__construct($name,$age);
}
public function profile()
{
# code...
echo "His name is {$this->name} and age is {$this->age} and grade is {$this->grade}";
}
}
$admin=new Adminstration("Tanzim",25,4);
$admin-> adminprofile();
Method Overriding
When we extend the parent class to inherit properties and methods if we instantiate the children class which extends the parent class and both parent class and child class or inherited class have method with same name than the class overrides the method of parent class and replaces it with same method name child class
<?php
class Student{
public function profile(){
echo "Profile from student class";
}
}
class Adminstration extends Student{
// public function profile(){
// echo "Profile from adminstration class";
// }
}
$stu=new Student;
// $stu->profile();
$admin=new Adminstration;
$admin->profile();
Here we see class Administration which is the child class which inherits properties and methods of parent class here we see when we instantiate the child class Administration and point out the method profile it gives us methods of parent class
Then if we write a class
<?php
class Student{
public function profile(){
echo "Profile from student class";
}
}
class Adminstration extends Student{
public function profile(){
echo "Profile from adminstration class";
}
}
$stu=new Student;
$admin=new Adminstration;
$admin->profile();
Here if we see that Adminstration which is child class extending parent class and here both child and parent class have the same method named profile.In this case this is the output we get.
Here we see the method in child class overrides properties in parent class we get the property from child class
Abstract Classes
Abstract classes are classes which can only be used when another class extends it
<?php
abstract class Student{
public function profile(){
echo "Profile";
}
}
$tech=new Student;
$tech->profile();
?>
Here if we just we instantiate the class we get this error
But if we write
<?php
abstract class Student{
public function profile(){
echo "Profile";
}
}
class Teacher extends Student{
}
$tech=new Student;
$tech->profile();
?>
Here if we extend the class and instantiate the child class we can get access to the parent class.We will get profile printed from parent class
So its part 2 of php oop hopefully in next part we will discuss some concepts such as Interface,traits etc
Top comments (0)