1. 程式人生 > >兩個特定語法場景與3大思想特徵

兩個特定語法場景與3大思想特徵

一、兩個特定語法場景的辨析:

1、物件向下傳遞特性;

  當一個物件($o1) 呼叫一個例項方法,然後,在該例項方法(f1)中又去“靜態”呼叫另一個類的方法(f2),則在方法f2中,會自動獲得在方法f1中的那個$this物件。

       

  對比:

       

    可見f2方法直接呼叫會產生嚴重錯誤(因為找不到$this)

 

2、static後期靜態繫結特性:

     

可見static3個不同含義的語法:

函式中的靜態變數:

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 ){....做事情

1;。。。。}

  function  f1($x, $y ){....做事情2;。。。。}

  function  f1($x, $y, $z ){....做事情3;。。。。}

}

  也指:不同的物件使用相同的方法,但得到不同的結果: