{"id":164,"date":"2018-07-12T10:49:37","date_gmt":"2018-07-12T10:49:37","guid":{"rendered":"http:\/\/itp9.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=164"},"modified":"2018-12-07T10:55:59","modified_gmt":"2018-12-07T10:55:59","slug":"oop-iv-in-php","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/chapter\/oop-iv-in-php\/","title":{"rendered":"OOP \u2013 IV in PHP"},"content":{"raw":"<div><span style=\"float: right\"><a href=\"https:\/\/youtu.be\/82g3c6PHqbE\" target=\"_blank\" rel=\"noopener\"><img src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"epgp books\" width=\"75px\" height=\"75px;\" \/><\/a>\r\n<\/span><\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<strong>Abstract class and method<\/strong>\r\n<ul>\r\n \t<li>An abstract class is a class which cannot be used to create an object.<\/li>\r\n \t<li style=\"text-align: justify\">An abstract class is used to create a superclass which can be inherited by other classes. But an object from superclass (Abstract class) cannot be created.<\/li>\r\n \t<li style=\"text-align: justify\">An abstract method is a method which has only method name and parameter(s) but does not have code blocks which implements the method. In short, abstract method has defined but it cannot have implementation.<\/li>\r\n \t<li>An abstract method can only defined in abstract class.<\/li>\r\n \t<li>An Abstract class can have abstract and non-abstract method(s).<\/li>\r\n \t<li>A concrete class is a class which cane used to create an object.<\/li>\r\n \t<li style=\"text-align: justify\">The concrete class which inherits the abstract class must implement all abstract methods of abstract class. Otherwise, PHP shows fatal error.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nFollowing code shows an example of abstract class.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nabstract class Person\r\n\r\n{\r\n\r\nprivate $fname,$lname,$email,$mobile;\r\n\r\npublic function __construct($fname,$lname)\r\n\r\n{\r\n\r\n$this-&gt;fname = $fname;\r\n\r\n$this-&gt;lname = $lname;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n\/\/fname\r\n\r\n&nbsp;\r\n\r\npublic function getfname()\r\n\r\n{\r\n\r\nreturn $this-&gt;fname;\r\n\r\n}\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n\u00a0 \u00a0 \u00a0public function getmobile()\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/fullname<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">abstract public function getfullname();<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/getfullname<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getfullname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$fullname = $this-&gt;getfname().' '.$this-&gt;getlname();<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $fullname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp = new Employee('first','last',1,'IT');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$ans = $emp-&gt;getfullname();<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; $ans\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThe output will be:\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:Person:private] =&gt; first [lname:Person:private] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; ) first last<\/p>\r\n&nbsp;\r\n\r\n<strong>Final class and method<\/strong>\r\n<ul>\r\n \t<li style=\"text-align: justify\">Sometimes you may be required that a method does not override in subclass. To do that, you can use the final keyword.<\/li>\r\n \t<li style=\"text-align: justify\">Sometimes you may be required that a class does not inherited by a subclass. To do that, you can use the final keyword.<\/li>\r\n \t<li>Final class cannot be extended by a subclass.<\/li>\r\n<\/ul>\r\nFollowing example shows the use of final method.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nclass Person\r\n\r\n{\r\n\r\nprivate $fname,$lname,$email,$mobile;\r\n\r\npublic function __construct($fname,$lname)\r\n\r\n{\r\n\r\n$this-&gt;fname = $fname;\r\n\r\n$this-&gt;lname = $lname;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n\/\/fname\r\n\r\n&nbsp;\r\n\r\npublic function getfname()\r\n\r\n{\r\n\r\nreturn $this-&gt;fname;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getmobile()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">final public function getfullname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;h1&gt; Hello\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">p<\/span><span style=\"text-align: initial;font-size: 1em\">rivate $eid, $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getfullname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;getfname(). ' '.$this-&gt;getlname();<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp = new Employee('first','last',1,'IT');<\/span>\r\n\r\n<span style=\"font-size: 1em;text-align: initial\">print_r($emp);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp-&gt;setmobile(1234567890);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThe output will be:\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Fatal error: Cannot override final method Person::getfullname() in :\\wamp\\www\\PathshalaWAD\\OOP\\Final method\\final method.php on line <em>92<\/em><\/p>\r\n&nbsp;\r\n\r\n<em>If you define<\/em>\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nfinal class Person\r\n\r\n{\r\n\r\nprivate $fname,$lname,$email,$mobile;\r\n\r\npublic function __construct($fname,$lname)\r\n\r\n{\r\n\r\n$this-&gt;fname = $fname;\r\n\r\n$this-&gt;lname = $lname;\r\n\r\n}\r\n\r\n\/\/fname\r\n\r\npublic function getfname()\r\n\r\n{\r\n\r\nreturn $this-&gt;fname;\r\n\r\n}\r\n\r\npublic function setfname($value)\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">p<\/span><span style=\"text-align: initial;font-size: 1em\">ublic function setlname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span>\r\n\r\n<span style=\"font-size: 1em;text-align: initial\">public function getemail()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n\/\/mobile\r\n\r\n&nbsp;\r\n\r\npublic function getmobile()\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">final public function getfullname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;h1&gt; Hello\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">p<\/span><span style=\"text-align: initial;font-size: 1em\">ublic function __construct($fname, $lname,$eid,$edept)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getfullname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;getfname(). ' '.$this-&gt;getlname();<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp = new Employee('first','last',1,'IT');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp-&gt;setmobile(1234567890);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThen the output will be:\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Fatal error: Class Employee may not inherit from final class (Person) in \\wamp\\www\\PathshalaWAD\\OOP\\Final method\\final class demo.php on line <em>92<\/em><\/p>\r\n&nbsp;\r\n\r\n<strong style=\"text-align: initial;font-size: 1em\">Interface<\/strong>\r\n\r\n<\/div>\r\n<div>\r\n<ul>\r\n \t<li style=\"text-align: justify\">Some OOP language like C++ supports multiple inheritance.<\/li>\r\n \t<li style=\"text-align: justify\">Multiple inheritance means a class can simultaneously inherits more than one class.<\/li>\r\n \t<li style=\"text-align: justify\">In PHP, a class cannot simultaneously inherits more than one class.<\/li>\r\n \t<li style=\"text-align: justify\">A class can inherit multiple interfaces simultaneously in PHP.<\/li>\r\n \t<li style=\"text-align: justify\">An interface defines public method(s) which can be implemented by a class.<\/li>\r\n \t<li style=\"text-align: justify\">The interface only defines the method (method name and parameter list) but does not provide method implementation (code to implement method).<\/li>\r\n \t<li style=\"text-align: justify\">Each method in interface must be public.<\/li>\r\n \t<li style=\"text-align: justify\">Method(s) in interface cannot be static.<\/li>\r\n \t<li style=\"text-align: justify\">A class which implements interface must provide implementation of all the methods define in interface.<\/li>\r\n \t<li style=\"text-align: justify\">An interface can define class constant also. These class constants can be available to any class which implements interface.<\/li>\r\n \t<li style=\"text-align: justify\">A class can only inherit one class but it can implements many interfaces.<\/li>\r\n \t<li style=\"text-align: justify\">A class can inherit one class and multiple interfaces simultaneously.<\/li>\r\n<\/ul>\r\nFollowing code shows example of\u00a0 Interface.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\n\/\/\u00a0 interface showable interface showable\r\n\r\n{\r\n\r\npublic function show();\r\n\r\n}\r\n\r\n\/\/interface test\r\n\r\ninterface test\r\n\r\n{\r\n\r\npublic function disp1($val1);\r\n\r\npublic function disp2($val1, $val2);\r\n\r\n}\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/interface gender<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">interface gender<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">const M = 'Male';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">const F = 'Female';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/\u00a0 class person class Person<\/span>\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $fname,$lname,$email,$mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname,$lname)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $fname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/fname<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getfname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;fname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getmobile()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Employee extends Person implements showable,test<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $dept, $salary;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname,$lname,$dept,$salary)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;dept = $dept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;salary = $salary;<\/span>\r\n\r\n}\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/dept<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;dept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setdept($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;dept = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/salary<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getsalary()<\/span>\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;salary;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setsalary($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;salary = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/\u00a0 implements show mrthod of interface showable public function show()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; Full Name :\". $this-&gt;getfname().' '.$this-&gt;getlname(); echo \"&lt;br&gt; Dept :\".$this-&gt;dept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; Salry :\".$this-&gt;salary;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function disp1($val)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;h1&gt; This is disp1 function : $val\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function disp2($val1,$val2)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; Calling Disp2 to display $val1 and $val2\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp = new Employee('First','Last','IT',25000);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">emp-&gt;show();<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp-&gt;disp2('Good Morning','from Disp2');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp-&gt;disp1('Greetings');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n&nbsp;\r\n\r\nThe output will be:\r\n\r\n&nbsp;\r\n\r\nFull Name :First Last\r\n\r\nDept :IT\r\n\r\nSalry :25000\r\n\r\nCalling Disp2 to display Good Morning and from Disp2\r\n\r\n&nbsp;\r\n\r\n<strong>This is disp1 function : Greetings<\/strong>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><strong>you can view video on OOP \u2013 IV in PHP<\/strong><\/td>\r\n<td><a href=\"https:\/\/youtu.be\/82g3c6PHqbE\" target=\"_blank\" rel=\"noopener\"><img class=\"alignnone wp-image-120\" src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"\" width=\"36\" height=\"36\" \/><\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<strong>Reference:<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">1. Luke Welling, Laura Thomson: PHP and MySQL Web Development, Pearson,<\/p>\r\n<p style=\"text-align: justify\">2. W. Jason Gilmore: Beginning PHP and MySQL 5 From Novice to Professional,Apress<\/p>\r\n<p style=\"text-align: justify\">3. Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy Stolz, Michael K.Glass: Beginning PHP5, Apache, and MySQL Web Development, Wrox,<\/p>\r\n<p style=\"text-align: justify\">4. Robin Nixon: Learning PHP, MySQL, and JavaScript, O'Reilly Media<\/p>\r\n<p style=\"text-align: justify\">5. Ed Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove:Professional PHP, Wrox<\/p>\r\n<p style=\"text-align: justify\">6. Tim Converse, Joyce Park, Clark Morgan: PHP5 and MySQL Bible<\/p>\r\n<p style=\"text-align: justify\">7. Joel Murach, Ray Harris: Murach\u2019s PHP and MySQL, Shroff\/Murach<\/p>\r\n<p style=\"text-align: justify\">8. Ivan Bayross, Web Enabled Commercial Application Development Using HTML\/Javascript\/DHTML\/PHP , BPB Publications<\/p>\r\n<p style=\"text-align: justify\">9. Julie C. Meloni, Sams Teach Yourself PHP, MySQL and Apache All in One, Sams<\/p>\r\n<p style=\"text-align: justify\">10. Larry Ullman, PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide,Pearson Education<\/p>\r\n<p style=\"text-align: justify\">11. http:\/\/www.php.net<\/p>\r\n<p style=\"text-align: justify\">12. http:\/\/www.w3schools.com\/<\/p>\r\n<p style=\"text-align: justify\">13. http:\/\/www.tutorialspoint.com\/<\/p>\r\n<p style=\"text-align: justify\">14. https:\/\/docs.oracle.com\/javase\/tutorial\/java\/concepts\/<\/p>\r\n<p style=\"text-align: justify\">15. http:\/\/www.tutorialspoint.com\/cplusplus\/cpp_object_oriented.htm<\/p>\r\n<p style=\"text-align: justify\">16. http:\/\/www.tutorialspoint.com\/php\/php_object_oriented.htm<\/p>\r\n<p style=\"text-align: justify\">17. http:\/\/inchoo.net\/dev-talk\/understanding-phps-oop-basic-terms-explained\/<\/p>","rendered":"<div><span style=\"float: right\"><a href=\"https:\/\/youtu.be\/82g3c6PHqbE\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"epgp books\" width=\"75px\" height=\"75px;\" \/><\/a><br \/>\n<\/span><\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Abstract class and method<\/strong><\/p>\n<ul>\n<li>An abstract class is a class which cannot be used to create an object.<\/li>\n<li style=\"text-align: justify\">An abstract class is used to create a superclass which can be inherited by other classes. But an object from superclass (Abstract class) cannot be created.<\/li>\n<li style=\"text-align: justify\">An abstract method is a method which has only method name and parameter(s) but does not have code blocks which implements the method. In short, abstract method has defined but it cannot have implementation.<\/li>\n<li>An abstract method can only defined in abstract class.<\/li>\n<li>An Abstract class can have abstract and non-abstract method(s).<\/li>\n<li>A concrete class is a class which cane used to create an object.<\/li>\n<li style=\"text-align: justify\">The concrete class which inherits the abstract class must implement all abstract methods of abstract class. Otherwise, PHP shows fatal error.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Following code shows an example of abstract class.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>abstract class Person<\/p>\n<p>{<\/p>\n<p>private $fname,$lname,$email,$mobile;<\/p>\n<p>public function __construct($fname,$lname)<\/p>\n<p>{<\/p>\n<p>$this-&gt;fname = $fname;<\/p>\n<p>$this-&gt;lname = $lname;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/fname<\/p>\n<p>&nbsp;<\/p>\n<p>public function getfname()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;fname;<\/p>\n<p>}<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span><\/p>\n<\/div>\n<div>\n<p>\u00a0 \u00a0 \u00a0public function getmobile()<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/fullname<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">abstract public function getfullname();<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/getfullname<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getfullname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$fullname = $this-&gt;getfname().&#8217; &#8216;.$this-&gt;getlname();<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $fullname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp = new Employee(&#8216;first&#8217;,&#8217;last&#8217;,1,&#8217;IT&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$ans = $emp-&gt;getfullname();<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; $ans&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>The output will be:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:Person:private] =&gt; first [lname:Person:private] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; ) first last<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Final class and method<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify\">Sometimes you may be required that a method does not override in subclass. To do that, you can use the final keyword.<\/li>\n<li style=\"text-align: justify\">Sometimes you may be required that a class does not inherited by a subclass. To do that, you can use the final keyword.<\/li>\n<li>Final class cannot be extended by a subclass.<\/li>\n<\/ul>\n<p>Following example shows the use of final method.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>class Person<\/p>\n<p>{<\/p>\n<p>private $fname,$lname,$email,$mobile;<\/p>\n<p>public function __construct($fname,$lname)<\/p>\n<p>{<\/p>\n<p>$this-&gt;fname = $fname;<\/p>\n<p>$this-&gt;lname = $lname;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/fname<\/p>\n<p>&nbsp;<\/p>\n<p>public function getfname()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;fname;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getmobile()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">final public function getfullname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;h1&gt; Hello&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">p<\/span><span style=\"text-align: initial;font-size: 1em\">rivate $eid, $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getfullname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;getfname(). &#8216; &#8216;.$this-&gt;getlname();<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp = new Employee(&#8216;first&#8217;,&#8217;last&#8217;,1,&#8217;IT&#8217;);<\/span><\/p>\n<p><span style=\"font-size: 1em;text-align: initial\">print_r($emp);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp-&gt;setmobile(1234567890);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>The output will be:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Fatal error: Cannot override final method Person::getfullname() in :\\wamp\\www\\PathshalaWAD\\OOP\\Final method\\final method.php on line <em>92<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><em>If you define<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>final class Person<\/p>\n<p>{<\/p>\n<p>private $fname,$lname,$email,$mobile;<\/p>\n<p>public function __construct($fname,$lname)<\/p>\n<p>{<\/p>\n<p>$this-&gt;fname = $fname;<\/p>\n<p>$this-&gt;lname = $lname;<\/p>\n<p>}<\/p>\n<p>\/\/fname<\/p>\n<p>public function getfname()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;fname;<\/p>\n<p>}<\/p>\n<p>public function setfname($value)<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">p<\/span><span style=\"text-align: initial;font-size: 1em\">ublic function setlname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span><\/p>\n<p><span style=\"font-size: 1em;text-align: initial\">public function getemail()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<\/div>\n<div>\n<p>\/\/mobile<\/p>\n<p>&nbsp;<\/p>\n<p>public function getmobile()<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">final public function getfullname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;h1&gt; Hello&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">p<\/span><span style=\"text-align: initial;font-size: 1em\">ublic function __construct($fname, $lname,$eid,$edept)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getfullname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;getfname(). &#8216; &#8216;.$this-&gt;getlname();<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp = new Employee(&#8216;first&#8217;,&#8217;last&#8217;,1,&#8217;IT&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp-&gt;setmobile(1234567890);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>Then the output will be:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Fatal error: Class Employee may not inherit from final class (Person) in \\wamp\\www\\PathshalaWAD\\OOP\\Final method\\final class demo.php on line <em>92<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><strong style=\"text-align: initial;font-size: 1em\">Interface<\/strong><\/p>\n<\/div>\n<div>\n<ul>\n<li style=\"text-align: justify\">Some OOP language like C++ supports multiple inheritance.<\/li>\n<li style=\"text-align: justify\">Multiple inheritance means a class can simultaneously inherits more than one class.<\/li>\n<li style=\"text-align: justify\">In PHP, a class cannot simultaneously inherits more than one class.<\/li>\n<li style=\"text-align: justify\">A class can inherit multiple interfaces simultaneously in PHP.<\/li>\n<li style=\"text-align: justify\">An interface defines public method(s) which can be implemented by a class.<\/li>\n<li style=\"text-align: justify\">The interface only defines the method (method name and parameter list) but does not provide method implementation (code to implement method).<\/li>\n<li style=\"text-align: justify\">Each method in interface must be public.<\/li>\n<li style=\"text-align: justify\">Method(s) in interface cannot be static.<\/li>\n<li style=\"text-align: justify\">A class which implements interface must provide implementation of all the methods define in interface.<\/li>\n<li style=\"text-align: justify\">An interface can define class constant also. These class constants can be available to any class which implements interface.<\/li>\n<li style=\"text-align: justify\">A class can only inherit one class but it can implements many interfaces.<\/li>\n<li style=\"text-align: justify\">A class can inherit one class and multiple interfaces simultaneously.<\/li>\n<\/ul>\n<p>Following code shows example of\u00a0 Interface.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>\/\/\u00a0 interface showable interface showable<\/p>\n<p>{<\/p>\n<p>public function show();<\/p>\n<p>}<\/p>\n<p>\/\/interface test<\/p>\n<p>interface test<\/p>\n<p>{<\/p>\n<p>public function disp1($val1);<\/p>\n<p>public function disp2($val1, $val2);<\/p>\n<p>}<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/interface gender<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">interface gender<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">const M = &#8216;Male&#8217;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">const F = &#8216;Female&#8217;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/\u00a0 class person class Person<\/span><\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $fname,$lname,$email,$mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname,$lname)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $fname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/fname<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getfname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;fname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getmobile()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Employee extends Person implements showable,test<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $dept, $salary;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname,$lname,$dept,$salary)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;dept = $dept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;salary = $salary;<\/span><\/p>\n<p>}<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/dept<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;dept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setdept($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;dept = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/salary<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getsalary()<\/span><\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;salary;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setsalary($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;salary = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/\u00a0 implements show mrthod of interface showable public function show()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; Full Name :&#8221;. $this-&gt;getfname().&#8217; &#8216;.$this-&gt;getlname(); echo &#8220;&lt;br&gt; Dept :&#8221;.$this-&gt;dept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; Salry :&#8221;.$this-&gt;salary;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function disp1($val)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;h1&gt; This is disp1 function : $val&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function disp2($val1,$val2)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; Calling Disp2 to display $val1 and $val2&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp = new Employee(&#8216;First&#8217;,&#8217;Last&#8217;,&#8217;IT&#8217;,25000);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">emp-&gt;show();<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp-&gt;disp2(&#8216;Good Morning&#8217;,&#8217;from Disp2&#8242;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp-&gt;disp1(&#8216;Greetings&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>The output will be:<\/p>\n<p>&nbsp;<\/p>\n<p>Full Name :First Last<\/p>\n<p>Dept :IT<\/p>\n<p>Salry :25000<\/p>\n<p>Calling Disp2 to display Good Morning and from Disp2<\/p>\n<p>&nbsp;<\/p>\n<p><strong>This is disp1 function : Greetings<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>you can view video on OOP \u2013 IV in PHP<\/strong><\/td>\n<td><a href=\"https:\/\/youtu.be\/82g3c6PHqbE\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-120\" src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"\" width=\"36\" height=\"36\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Reference:<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">1. Luke Welling, Laura Thomson: PHP and MySQL Web Development, Pearson,<\/p>\n<p style=\"text-align: justify\">2. W. Jason Gilmore: Beginning PHP and MySQL 5 From Novice to Professional,Apress<\/p>\n<p style=\"text-align: justify\">3. Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy Stolz, Michael K.Glass: Beginning PHP5, Apache, and MySQL Web Development, Wrox,<\/p>\n<p style=\"text-align: justify\">4. Robin Nixon: Learning PHP, MySQL, and JavaScript, O&#8217;Reilly Media<\/p>\n<p style=\"text-align: justify\">5. Ed Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove:Professional PHP, Wrox<\/p>\n<p style=\"text-align: justify\">6. Tim Converse, Joyce Park, Clark Morgan: PHP5 and MySQL Bible<\/p>\n<p style=\"text-align: justify\">7. Joel Murach, Ray Harris: Murach\u2019s PHP and MySQL, Shroff\/Murach<\/p>\n<p style=\"text-align: justify\">8. Ivan Bayross, Web Enabled Commercial Application Development Using HTML\/Javascript\/DHTML\/PHP , BPB Publications<\/p>\n<p style=\"text-align: justify\">9. Julie C. Meloni, Sams Teach Yourself PHP, MySQL and Apache All in One, Sams<\/p>\n<p style=\"text-align: justify\">10. Larry Ullman, PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide,Pearson Education<\/p>\n<p style=\"text-align: justify\">11. http:\/\/www.php.net<\/p>\n<p style=\"text-align: justify\">12. http:\/\/www.w3schools.com\/<\/p>\n<p style=\"text-align: justify\">13. http:\/\/www.tutorialspoint.com\/<\/p>\n<p style=\"text-align: justify\">14. https:\/\/docs.oracle.com\/javase\/tutorial\/java\/concepts\/<\/p>\n<p style=\"text-align: justify\">15. http:\/\/www.tutorialspoint.com\/cplusplus\/cpp_object_oriented.htm<\/p>\n<p style=\"text-align: justify\">16. http:\/\/www.tutorialspoint.com\/php\/php_object_oriented.htm<\/p>\n<p style=\"text-align: justify\">17. http:\/\/inchoo.net\/dev-talk\/understanding-phps-oop-basic-terms-explained\/<\/p>\n","protected":false},"author":3,"menu_order":13,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-hiren-joshi"],"pb_section_license":""},"chapter-type":[],"contributor":[59],"license":[],"class_list":["post-164","chapter","type-chapter","status-publish","hentry","contributor-dr-hiren-joshi"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":11,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/164\/revisions"}],"predecessor-version":[{"id":490,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/164\/revisions\/490"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/164\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/media?parent=164"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapter-type?post=164"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/contributor?post=164"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/license?post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}