php 繼承
<?php
/*
繼承性
1.面向對象的三大特性之一
2.開放性,可擴充性
3.增加代碼的重用性
4.提高了軟件的可維護性
php 使弱類型語言,沒有重載的概念
子類中重載父類的方法
子類可以聲明和父類相同的方法名,即子類覆蓋父類中同名的方法
在子類中調用父類中被覆蓋的方法
parent::方法名
在子類中編寫構造方法,如果父類中也有構造方法,一定要調用父類中的構造方法
注意:子類中重載的方法,不能低於父類中的訪問權限(子類可以放大權限,但不能縮小權限)
*/
include "./Person.class.php";
class Student extends Person{
var $school;
function __construct($name="name1",$age =20,$sex="女", $school){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
$this->school = $school;
}
function study(){
echo $this->age;
echo $this->name.":我在{$this->school}學習<br>";
}
/*
覆蓋父類的say(),子類中重載的方法,不能低於父類中的訪問權限(子類可以放大權限,但不能縮小權限)
父類中是public function say(){}
子類中變成了private function say(){}
private function say(){
echo "{$this->name}:我在{$this->school}學習呢,請不要打擾我<br>";
}
這時候會報錯Fatal error: Access level to Student::say() must be public (as in class Person
*/
public function say(){
parent::say();
echo "{$this->name}:我在{$this->school}學習呢,請不要打擾我<br>";
}
}
#$student = new Student;
#$student->school="北京大學附屬中學";
#$student->name="haha";
#$student->age=32;
#$student->study();
#$student->say();
$student2 = new Student("李會東",24,"男","北京大學");
#echo $student2->school;
$student2->say();
?>