<?php
//開發一套學生管理系統(小學生pupil,大學生,...)
//父類
class Stu{
public $name;
protected $age;
protected $grade;
public function showInfo(){
echo $this->name."||".$this->age;
}
}
//子類
class Pupil extends stu{ //小學生
public function testing(){
echo "小學生考試";
}
}
class Graduate extends stu{//研究生
public function testing(){
echo "研究生考試";
}
}
//創建學生
$stu1=new Pupil();
$stu1->testing();
$stu1->name="www.bianceng.cn";
$stu1->showInfo();
echo "<br />";
//創建研究生
$stu2=new Graduate();
$stu2->testing();
$stu2->name="hello";
$stu2->showInfo();
?>
從上面代碼可以看出,所謂繼承,就是一個子類通過 extends 父類,把父類的public/protect屬性和方法繼承下來,但不能繼承父類的private屬性和方法。
class 類名 extends 父類名{
//子類需要的屬性和方法
}
<?php
//父類的什麼屬性和方法被子類繼承
class A{
public $n1=1;
protected $n2="www.bianceng.cn";
private $n3=20;
public function test1(){
echo "test1()";
}
public function test2(){
echo "test2()";
}
public function test3(){
echo "test3()";
}
}
class SubClass extends A{
function show(){
echo "<br />".$this->n2; //
}
}
//創建SubClass對象
$sub1=new SubClass();
$sub1->test1();
echo "<br />";
$sub1->test2();
echo "<br />";
$sub1->test3();
echo "<br />".$sub1->n1;
$sub1->show();
?>
可以通過繼承兩次的方法達到繼承多個類的目的。
<?php
class A{
}
class B extends A{
}
class C extends B{ //通過兩次繼承,C繼承了A和B兩個類
}
?>
<?php
class A{
//構造方法
public function __construct(){
echo "A__construct";
}
}
class B extends A{
function __construct(){
echo "B__construct";
}
}
//創建對象實例
$b=new B(); //輸出B__construct
?>
(1)類名::方法名();
(2)parent::方法名();
例:
<?php
class A{
//構造方法
public $n1=90;
public function __construct($n1){
$this->n1=$n1;
echo "A__construct";
}
}
class B extends A{
function __construct(){
echo "B__construct";
//顯式的調用父類的方法
//A::__construct(900);
parent::__construct(900);
}
}
//創建對象實例
$b=new B(); //輸出B__construct
echo "<br />".$b->n1; //輸出900
?>
URL:http://www.bianceng.cn/webkf/PHP/201610/50463.htm