国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺談PHP面向?qū)ο缶幊?

DrizzleX / 2260人閱讀

摘要:一面向?qū)ο缶幊袒A(chǔ)實(shí)踐通過對(duì)象的編程方式,可將實(shí)現(xiàn)生活中的一切事物以對(duì)象的形式表現(xiàn)出來。此時(shí)程序也將會(huì)報(bào)致命錯(cuò)誤。屬性不可訪問或未定義,值判斷對(duì)象中的屬性不存在時(shí),自動(dòng)執(zhí)行該函數(shù)。屬性值未定義釋放對(duì)象中的不存在的屬性值時(shí),自動(dòng)執(zhí)行該函數(shù)。

一、PHP面向?qū)ο缶幊袒A(chǔ)實(shí)踐

name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }
    public function say()
    {
        echo "大家好,我的名字叫".$this->name.",今年".$this->age."歲,我的性別是".$this->sex;
    }
    public function __destruct()
    {
        $this->name = null;
        $this->sex = null;
        $this->age = null;
    }
}
//實(shí)例化“人”類
$male = new Human("張三","男","20");
//調(diào)用“人”類說話的方法
$male->say();

//輸出結(jié)果:大家好,我的名字叫張三,今年20歲,我的性別是男
?>

二、PHP面向?qū)ο蟾呒?jí)編程實(shí)踐

知識(shí)點(diǎn):類的繼承、方法重寫、訪問控制、static關(guān)鍵字、final關(guān)鍵字、數(shù)據(jù)訪問、接口、多態(tài)、抽象類

2.1、類的繼承:extends 關(guān)鍵字
例如:一員運(yùn)行員、一位主持人,他們有人類共同的行為方法,但他們都有自己不同的特長(zhǎng)專業(yè)。因此在編程時(shí)需要給他們創(chuàng)建一個(gè)父類并繼承;

name."
";
    }
    public function eat()
    {
        echo "父類吃飯的方法
";
    }
}
/*
*    創(chuàng)建一個(gè)“運(yùn)動(dòng)員”類,繼承“人”類
*    extends : 關(guān)鍵字,繼承某個(gè)類
*/
class Sport extends Human
{
    public $type;    
    public function __construct($name,$type)
    {
        $this->name = $name;    //給父類 $name 屬性賦值
        $this->type = $type;    
    }
    public function run()
    {
        $this->say();   //調(diào)用父類“說話”的方法
        echo "我在正跑步,我是一員".$this->type."運(yùn)動(dòng)員.....
";
    }
}
/*
*    創(chuàng)建一個(gè)“主持人”類,繼承“人”類
*    extends : 關(guān)鍵字,繼承某個(gè)類
*/
class Host extends Human
{
    public $television; 
    public function __construct($name,$television)
    {
        $this->name = $name;    
        $this->television= $television;   
    }
    public function perform()
    {
        $this->eat();   //調(diào)用父類“吃飯”的方法
        echo "我在正表演一個(gè)節(jié)目,我是".$this->television."電視臺(tái)的一名主持人.....
";
    }
}

//實(shí)例化“運(yùn)動(dòng)員”類
$nba = new Sport("喬丹","籃球");
$nba->run();

//實(shí)例化“主持人”類
$tv = new Host("張三","北京衛(wèi)視");
$tv->perform();

//輸出結(jié)果:
//父類說話的方法,姓名:?jiǎn)痰?我在正跑步,我是一員籃球運(yùn)動(dòng)員..... 
//父類吃飯的方法 我在正表演一個(gè)節(jié)目,我是北京衛(wèi)視電視臺(tái)的一名主持人.....
?>

2.2、方法重寫:子類重寫父類的方法

say();
//輸出結(jié)果:子類說話的方法
?>

2.3、訪問控制:public 、 protected 、private 關(guān)鍵字
public:定義公共的成員屬性或方法,任何地方都可使用
protected : 定義受保護(hù)的成員屬性或方法,只允許類本身或子類使用
private : 定義私有的成員屬性或方法,只允許類的本身使用

name = "張三";
echo $worker->name;

?>

2.4、static(靜態(tài))關(guān)鍵字
1)、靜態(tài)屬性用于保存類的公有數(shù)據(jù);
2)、靜態(tài)方法里面只能訪問靜態(tài)屬性或方法,不能使用 $this 偽變量;
3)、靜態(tài)成員不需要通過 new 關(guān)鍵字來實(shí)例化對(duì)象就可訪問使用;

2.5、final關(guān)鍵字:不允許成員方法被重寫,不允許被繼承
例:1、對(duì)于父類“吃飯”這個(gè)方法,不希望子類重寫它;2、對(duì)于“運(yùn)動(dòng)員”這個(gè)類,不希望它再創(chuàng)建子類;

eat();

//實(shí)例化 Student 類 ,給 name 屬性負(fù)值
$obj = new Student();
$obj->name = "張三";

//輸出結(jié)果:Fatal error: Cannot override final method Human::eat() in ******.php on line 15
//Fatal error: Class Student may not inherit from final class (Sport) in ****.php on line 20
?>

2.6、數(shù)據(jù)訪問:$this 、 self 、parent 關(guān)鍵字
$this : 偽變量,代表類的本身,可訪問本類及父類中的成員屬性與方法。
self : 訪問類中的靜態(tài)成員屬性或方法
parent :訪問父類的成員屬性或方法

get();
//輸出結(jié)果:張三
?>

2.7、接口:把不同類的共同行為方法進(jìn)行定義,但不具體實(shí)現(xiàn),由子類來實(shí)現(xiàn)具體的方法;
例如:人會(huì)吃飯,動(dòng)物也會(huì)吃飯,甚至有些植物也會(huì)吃飯,但他們吃飯的方式不一樣,因此這時(shí)需要定義一個(gè)接口類,具體的方式由子類來實(shí)現(xiàn);
定義接口關(guān)鍵字:interface
實(shí)現(xiàn)接口方法關(guān)鍵字:implements

eat("rice");

//實(shí)例化一個(gè)“動(dòng)物”類
$monkey = new Animal();
$monkey->eat("banana");

//輸出結(jié)果:I"m eating rice
// It"s eating banana

?>

2.8、多態(tài):比如接口A有兩個(gè)實(shí)現(xiàn)B和C,B和C對(duì)A接口里面定義的方法實(shí)現(xiàn)可以是不同的,這種現(xiàn)象稱之為多態(tài);
上述實(shí)例中,ICanEat接口定義了一個(gè)eat()方法,人類吃米飯,猴子吃香蕉。他們都實(shí)現(xiàn)了一個(gè)“吃”的方法,但他們吃東西有不同的行為,稱之為多態(tài);

2.9、抽象類:介入接口與類的定義之間,允許類里面一部分方法不實(shí)現(xiàn),實(shí)現(xiàn)一部分有相同功能且不會(huì)更改的方法。然而接口類里面不允許有任何實(shí)現(xiàn)的方法。
例如:人和動(dòng)物都具有吃飯與呼吸的方法,除吃飯不同以外,呼吸方法是相同的,此時(shí)需要定義一個(gè)抽象類來實(shí)現(xiàn)。
定義抽象類關(guān)鍵字:abstract

breath();
    }
}
//實(shí)例化“人”類
$people = new Human();
$people->eat("rice");
//輸出結(jié)果:I"m eating rice Breath use the air...
?>

三、PHP面向?qū)ο缶幊烫厥鈱?shí)踐
PHP語(yǔ)言特定的一些魔術(shù)方法:

runTest();        //當(dāng)調(diào)用對(duì)象中不存在的方法時(shí),執(zhí)行__call()方法
$obj::runTest();        //當(dāng)調(diào)用對(duì)象中不存在的靜態(tài)方法時(shí),執(zhí)行__callStatic()方法
$obj->name;             //當(dāng)調(diào)用對(duì)象中不存在的成員屬性時(shí),執(zhí)行__get()方法
$obj->name = "張三";    //當(dāng)給對(duì)象中不存在的成員屬性賦值時(shí),執(zhí)行__set()方法
isset($obj->name) ? 1 : 0;     //判斷對(duì)象中不存在的成員屬性時(shí),執(zhí)行__isset()方法
unset($obj->name);      //釋放對(duì)象中的不存在的屬性值時(shí),執(zhí)行__unset()方法
$obj2 = clone $obj;     //當(dāng)對(duì)象被克隆時(shí),執(zhí)行__clone()方法
                        //對(duì)象執(zhí)行完畢,執(zhí)行__destruct()方法
?>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28552.html

相關(guān)文章

  • 淺談JavaScript的面向對(duì)象和它的封裝、繼承、多態(tài)

    摘要:會(huì)造成內(nèi)存浪費(fèi)的問題構(gòu)造函數(shù)繼承聲明父類聲明子類生成實(shí)例組合式繼承組合式繼承是汲取了兩者的優(yōu)點(diǎn),既避免了內(nèi)存浪費(fèi),又使得每個(gè)實(shí)例化的子類互不影響。 寫在前面 既然是淺談,就不會(huì)從原理上深度分析,只是幫助我們更好地理解... 面向?qū)ο笈c面向過程 面向?qū)ο蠛兔嫦蜻^程是兩種不同的編程思想,剛開始接觸編程的時(shí)候,我們大都是從面向過程起步的,畢竟像我一樣,大家接觸的第一門計(jì)算機(jī)語(yǔ)言大概率都是C語(yǔ)...

    MAX_zuo 評(píng)論0 收藏0
  • 淺談JavaScript中的面向對(duì)象

    摘要:面向?qū)ο竺嫦驅(qū)ο缶幊痰娜Q是,簡(jiǎn)稱,面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程模式。面向?qū)ο缶幊痰娜齻€(gè)主要特征是封裝繼承多態(tài)。 面向?qū)ο?面向?qū)ο缶幊痰娜Q是Object Oriented Programming,簡(jiǎn)稱OOP,面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程模式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象相互協(xié)作的軟件設(shè)計(jì),面向?qū)ο蟪绦蛟O(shè)計(jì)的目的是在編程中促...

    Magicer 評(píng)論0 收藏0
  • 淺談面向對(duì)象的javascript幾個(gè)特性

    摘要:中的和是一門很靈活的語(yǔ)言,尤其是。即然是面向?qū)ο蟮木幊陶Z(yǔ)言,那也是不可或缺的。在中,永遠(yuǎn)指向的是他的調(diào)用者。定義是存在于實(shí)例化后對(duì)象的一個(gè)屬性,并且指向原對(duì)象的屬性。我們?cè)跀U(kuò)展的時(shí)候,同時(shí)父類也會(huì)有對(duì)應(yīng)的方法,這很顯然是一個(gè)很嚴(yán)重的問題。 javascript中的this和new javascript是一門很靈活的語(yǔ)言,尤其是function。他即可以以面向過程的方式來用,比如: f...

    JayChen 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<