訪問控制 public(公開的):可以在類中、子類中、類外訪問。 protected(受保護的):只能在類本身及子類中訪問。 private(私有的):只能在聲明他們的類中進行訪問,私有的類成員不能被子類或者這個類的對象實例直接訪問。 抽象類和方法 在繼承概念被應用在一些場景中,創建一個父類的實例將 ...
訪問控制
public(公開的):可以在類中、子類中、類外訪問。
protected(受保護的):只能在類本身及子類中訪問。
private(私有的):只能在聲明他們的類中進行訪問,私有的類成員不能被子類或者這個類的對象實例直接訪問。
抽象類和方法
在繼承概念被應用在一些場景中,創建一個父類的實例將會顯得不怎麼合適。在這種情況下,如果將父類定義為一個抽象基類,而不是標準的基類,會顯得更加合適(抽象類不能被實例化)。
抽象類定義了這個基類的繼承類(子類)中的一些方法。然後子類會負責定義這些方法的真正的實現。
抽象類和普通類的區別在於,如果試圖從抽象類創建一個對象將會出現一個致命錯誤,抽象類就是被用來擴展的,然後我們就可以創建這些派生類的實例。
抽象類和方法的定義:
//抽象類的定義從abstract關鍵字開始 abstract class People{ protected $name = ""; //抽象方法以abstract開始,並且抽象方法沒有方法體,以分號結束 abstract public function setName($name); } //子類中實現抽象類的方法 class Teacher extends People{ public function setName($name){ $this->name = $name; } }
註意:
1.在子類里實現抽象方法的時候,其可見性必須高於或等於抽象方法的定義的可見性。如果抽象方法是公開的(public),子類里的實現方法也必須是公開的。如果抽象方法是受保護的(protected),那麼子類將只能是受保護的或者公開的。
2.我們不能將抽象方法定義為私有的(private),因為一個私有的方法不能夠被繼承。
3.在所有情況下,方法的實現版本也必須和抽象方法具有一樣數目的參數(函數簽名要一致)。
4.子類中必須實現基類中所有的抽象方法,否則將會出現一個致命錯誤。
5.屬性沒有抽象一說,抽象類中的屬性定義為正常屬性,子類也可以覆蓋抽象類中的屬性,此時屬性的可見性設置與抽象方法是一致的(見第1條)。
本章博客會不定期更新所有有關PHP面向對象的知識,敬請期待……