js物件導向:
類:具有相同特徵的一些物件的集合;
物件:具體某乙個事物了,都可以叫物件;
類:通過function定義的類,所以js裡類的本質為函式;
類的標誌:首字母大寫(函式名 ) 函式內部使用this 呼叫函式使用new關鍵字;
1.類和函式天生有prototype和__proto__兩個屬性,prototype又是乙個物件,天生有乙個constructor的屬性,屬性值函式或類本身;
2.普通物件:天生有乙個__proto__的屬性,這個屬性又是乙個物件,指向他的父類;
引用關係:
fn.prototype.init=function(){}
fn.prototype= }
他們的區別?
前者不會改變原有引用關係,後者會改變原有的引用關係;
拷貝:淺拷貝,深拷貝;
php的物件導向;
類的建立:class建立;
class person{}
物件的建立:使用new關鍵字:
$p:new person(); (如果裡面沒有引數,可以不加括號);
成員的新增:需要3個修飾符:public protected private
public:定義公共的屬性,任何地方都可以使用,類的外部,類的內部,子類(公共)
protected:定義受保護的屬性和方法,只能在類的內部和子類使用(受保護)
private:定義私有的屬性和方法,只能在自身的類使用(私有)
案例:public $word="hello world"; (解析:定義公共的變數word)
方法成員的前面如果不加修飾符,預設為public;
成員的呼叫: 需要使用->符號;
$p->fn() (使用成員的屬性和方法的時候,屬性和方法前面不帶$符)
特殊物件:$this 指向例項化的物件;
案例:class person
$c=new child;
var_dump($c) 這樣繼承所有屬性 但是方法卻看不見
範圍的修飾符 ::
常量的使用const的關鍵字定義常量,常量定義和使用時不能帶$符
注意:使用的時候不能用$this ,範圍修飾符:: 前面還是這個類名,self關鍵字指向當前類名,parent關鍵字指向父類的類名;
如果子類向訪問父類的常量使用parent;
案例://父類
class person{
cont age="23",
//子類
class child extends person{
const name="zhang";
function fn(){
echo self::age; //指向當前類名
echo parent::name; //指向父類
$p=new child;
$p->fn();
靜態變數:在變數的前面加上關鍵字static,靜態的屬性不能使用->訪問,只能使用 類名::$變數名;
案例:class perosn{
static $name="zhang";
echo person::$name;
12.過載。覆蓋;final關鍵字的使用
子類繼承父類的方法時,如果子類有和父類同名的方法從父類繼承的方法就會被覆蓋掉,這就是過載;
但如果父類的方法前面加上final則子類無法過載父類的方法,就會報錯
案例://父類:
class person{
final function fn(){
echo "我的孩子,不能起我的名字,否則會報錯"
class child extends person{
function fn(){
echo "我不能用我爸的名字 我要報錯"
$p=new child;
$p->fn;
子類想使用父類的建構函式,只能使用 parent::__construct() 使用的時侯直接呼叫了;
案例://父類
class person{
public $name="zhang";
function __construct(){
echo $this->name;
//子類
class child extends person{
function __construct(){
parent::__construct();
$p=new child;
public protected private 的區別?
案例:了解即可:
//父類
class person{
public function a(){
echo "a";
protected function b(){
echo "b";
private function c(){
echo "c";
$p=new person;
$p->a(); 不會報錯
$p->b(); 會報錯
$p->c(); 會報錯
//子類
class child extends person{
function d(){
parent::a() //呼叫父類的a方法
function e(){
parent::b()
function f(){
parent::c()
$c=new child;
echo $c->d(); 不會報錯
echo $c->e(); 不會報錯
echo $c->f(); 會報錯
PHP物件導向
1 什麼是物件導向 起初,物件導向 是專指在程式設計中採用封裝 繼承 抽象等設計方法。可是,這個定義顯然不能再適合現在情況。物件導向的思想已經涉及到軟體開發的各個方面。如 物件導向的分析 ooa,object oriented analysis 物件導向的設計 ood,object oriented...
php物件導向
smarty自定義函式 作用 用於在模板被執行時為模板變數賦值 函式名稱 assign 引數 var 宣告變數名稱 字串 value 給該變數賦值 字串 tpl assign title this is title 實現自定義函式有兩種 1.註冊自定義函式 3.版本不支援 tpl register ...
php物件導向
一 寫出php的public protected private三種訪問控制模式的區別 public 公有,任何地方都可以訪問 protected 繼承,只能在本類或子類中訪問,在其他地方不允許訪問 private 私有,只能在本類中訪問,在其他地方不允許訪問 二 請用單態設計模式方法設計類滿足要求...