繼承
1.子類使用extends繼承父類,可以將父類所有內容繼承過來
2.private 只能自己用,子類都無法使用
3.protected這個是保護的權限,只能是自己和自己的子類使用的成員,外部不可使用
4.public 公開
重載
繼承中的重載(覆蓋):在子類中可以寫和父類同名的方法
parent::訪問父類中被覆蓋的方法
重要:只要是子類的構造方法,去覆蓋父類中的構造方法,一定要在子類的最上面調用一下父類被覆蓋的方法
權限問題:子類只能大于或等于父類的權限,不能小于
class Person {
var $name;
var $age;
var $sex;
function __construct($name,$age,$sex){
$this -> name = $name;
$this -> age = $age;
$this -> sex = $sex;
}
function say(){
echo "我的名字是:{$this->name}我的性別是:{$this->sex}";
}
function eat(){
}
function run(){
}
}
class Student extends Person{
var $school;
function__construct($name,$age,$sex,$school){
parent::__construct($name,$age,$sex,$school);
$this->school = $school;
}
function study(){
}
//重載
public function say(){
parent::say();
echo "我在的學校";
}
}
class Teacher extends Person{
var $name;
var $age;
var $sex;
var $dw;
function teach(){
}
}
關鍵字
1.instanceof 對象是不是某個類
2.在PHP中,final不定義常量,所以不能使用final修飾成員屬性
①final可以修飾類 ---這個類不能去擴展,不能有子類,也就是最終的類
②final可以修飾方法---這個方法,就不能在子類中覆蓋
3.static可以修飾屬性和方法,不能修飾類,
①使用static修飾成員屬性,存在內存的初始化靜態段。
②可以被所有同一個類的對象使用
③第一個用到類(類名第一次出現),類在加載到內存時,就已經將靜態的成員加到了內存
④靜態的成員一定要用類來訪問
Person::$country;
⑤.self可以在類中的方法中,代表自己的類
⑥腳本一旦加載,直到腳本釋放才結束
⑦在靜態的方法中,是不能訪問非靜態的成員的
⑧只要是能使用靜態的環境下聲明方法,就最好使用靜態方法效率
static function say(){
echo"我的名字是:“self::$name.”<br>";
}
4.const
常用define定義常量
define("常量名","值");
const 修飾的成員屬性為常量,只能修飾成員屬性
類中
1.常量建議使用大寫,不能使用$
2.常量一定要在聲明時就給好初值
3.常量的訪問方式和static的訪問方式相同,但只能讀
①在類外部使用 類名::常量名
②在類的外部使用 self::常量名
class Demo{
const SEX = "男";
static function say(){
echo self::SEX."<br>";
}
}
Demo::say();
//echo Demo::SEX;