中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

在PHP5中實(shí)現(xiàn)多態(tài)的方法有哪些-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)在PHP5中實(shí)現(xiàn)多態(tài)的方法有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、雞東網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

通過(guò)實(shí)現(xiàn)接口實(shí)現(xiàn)多態(tài)


復(fù)制代碼 代碼如下:


<?php
interface User{ // User接口
    public function  getName();
    public function setName($_name);
}

class NormalUser implements User { // 實(shí)現(xiàn)接口的類.
    private $name;
    public function getName(){
        return $this->name;
    }
    public function setName($_name){
        $this->name = $_name;
    }
}

class UserAdmin{ //操作.
    public static function  ChangeUserName(User $_user,$_userName){
        $_user->setName($_userName);
    }
}

$normalUser = new NormalUser();
UserAdmin::ChangeUserName($normalUser,"Tom");//這里傳入的是 NormalUser的實(shí)例.
echo $normalUser->getName();
?>


使用接口與組合模擬多繼承

通過(guò)組合模擬多重繼承。

在PHP中不支持多重繼承,如果我們向使用多個(gè)類的方法而實(shí)現(xiàn)代碼重用有什么辦法么?

那就是組合。在一個(gè)類中去將另外一個(gè)類設(shè)置成屬性。

下面的例子,模擬了多重繼承。

接口實(shí)例

寫一個(gè)概念性的例子。 我們?cè)O(shè)計(jì)一個(gè)在線銷售系統(tǒng),用戶部分設(shè)計(jì)如下: 將用戶分為,NormalUser, VipUser, InnerUser 三種。要求根據(jù)用戶的不同折扣計(jì)算用戶購(gòu)買產(chǎn)品的價(jià)格。并要求為以后擴(kuò)展和維護(hù)預(yù)留空間。


復(fù)制代碼 代碼如下:


<?php
interface User
{
    public function getName();
    public function setName($_name);
    public function getDiscount();
}
abstract class AbstractUser implements User
{
    private $name = "";
    protected  $discount = 0;
    protected  $grade = "";
    function __construct($_name) {
        $this->setName($_name);
    }
    function getName() {
        return $this->name;
    }
    function setName($_name) {
    $this->name = $_name;
    }
    function getDiscount() {
        return $this->discount;
    }
    function getGrade() {
        return $this->grade;
    }
}
class NormalUser extends AbstractUser
{
    protected $discount = 1.0;
    protected $grade = "Normal";
}
class VipUser extends AbstractUser
{
    protected $discount = 0.8;
    protected $grade = "VipUser";
}
class InnerUser extends AbstractUser
{
    protected $discount = 0.7;
    protected $grade = "InnerUser";
}
interface Product
{
    function getProductName();
    function getProductPrice();
}
interface Book extends Product
{
    function getAuthor();
}
class BookOnline implements Book
{
    private $productName;
    protected $productPrice;
    protected $Author;
    function __construct($_bookName) {
        $this->productName = $_bookName;
    }
    function getProductName() {
        return $this->productName;
    }
    function getProductPrice() {
        $this->productPrice = 100;
        return $this->productPrice;
    }
    public function getAuthor() {
        $this->Author = "chenfei";
        return $this->Author;
    }
}
class Productsettle
{
    public static function finalPrice(User $_user, Product $_product, $number) {
        $price = $_user->getDiscount() * $_product->getProductPrice() * $number;
        return $price;
    }
}
$number = 10;
$book = new BookOnline("設(shè)計(jì)模式");
$user = new NormalUser("tom");
$price = Productsettle::finalPrice($user, $book, $number);
$str = "您好,尊敬的" . $user->getName() . "<br />";
$str .= "您的級(jí)別是" . $user->getGrade() . "<br />";
$str .= "您的折扣是" . $user->getDiscount() . "<br />";
$str .= "您的價(jià)格是" . $price;
echo $str;
?>


看完上述內(nèi)容,你們對(duì)在PHP5中實(shí)現(xiàn)多態(tài)的方法有哪些有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

分享標(biāo)題:在PHP5中實(shí)現(xiàn)多態(tài)的方法有哪些-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.rwnh.cn/article10/ddcigo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、軟件開(kāi)發(fā)企業(yè)網(wǎng)站制作、企業(yè)建站Google、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
蓬安县| 乌鲁木齐市| 油尖旺区| 荔浦县| 库尔勒市| 霍林郭勒市| 吐鲁番市| 尼玛县| 阿鲁科尔沁旗| 苍南县| 阿拉善盟| 泸西县| 临夏县| 文水县| 东兰县| 宁河县| 江孜县| 清丰县| 清河县| 莱州市| 望奎县| 宾阳县| 永吉县| 共和县| 肥西县| 灵宝市| 青冈县| 大竹县| 堆龙德庆县| 昌邑市| 盐池县| 塔河县| 崇义县| 大渡口区| 巴楚县| 大渡口区| 宣化县| 临海市| 惠东县| 桂阳县| 车险|