兩個特定語法場景與3大思想特徵
一、兩個特定語法場景的辨析:
1、物件向下傳遞特性;
當一個物件($o1) 呼叫一個例項方法,然後,在該例項方法(f1)中又去“靜態”呼叫另一個類的方法(f2),則在方法f2中,會自動獲得在方法f1中的那個$this物件。
對比:
可見f2方法直接呼叫會產生嚴重錯誤(因為找不到$this)
2、static後期靜態繫結特性:
可見static有3個不同含義的語法:
函式中的靜態變數:
function f1(){
static $v1 = 1;
}
類中的靜態成員:
class A{
static $v1 = 1;
static function f1(){}
}
方法中的動態指代“當前類”:
class A{
function f1(){
static::f2();//static此時指代呼叫f1這個方法的類(或物件的類)
self::f2(); //self這裡永遠指代當前A這個類。
}
}
二、面向物件3大思想特徵介紹:
1、封裝:
(1)是什麼:就是把資料“封閉”起來,儘量不給別人看到。
(2)最基本封裝:面向物件的基本語法“類的定義”形式,可以認為是最基本封裝——封裝了很多資料到某個類(物件)。
(3)但:
更嚴格(更常說)的封裝,是儘量將屬性做出“私有的”——並通過共有的方法來向外提供對該屬性的“可控性操作”:
2、繼承:
https://www.cnblogs.com/wjglm/p/9758724.html
3、多型:
(1)多型:看起來用的是相同的東西(方法),但會得到不同的結果。
(2)通常是指:一個物件可以使用相同的方法(動作)但得到不同的結果:
(這裡是其他常見面向物件語法示例:)
class A{
function f1($x ){....做事情
function f1($x, $y ){....做事情2;。。。。}
function f1($x, $y, $z ){....做事情3;。。。。}
}
也指:不同的物件使用相同的方法,但得到不同的結果: