站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        php怎么實(shí)現(xiàn)多態(tài)

        在PHP5中,變量的類型是不確定的,一個變量可以指向任何類型的數(shù)值、字符串、對象、資源等。我們無法說PHP5中多態(tài)的是變量。

        我們只能說在PHP5中,多態(tài)應(yīng)用在方法參數(shù)的類型提示位置。

        php怎么實(shí)現(xiàn)多態(tài)

        一個類的任何子類對象都可以滿足以當(dāng)前類型作為類型提示的類型要求。

        所有實(shí)現(xiàn)這個接口的類,都可以滿足以接口類型作為類型提示的方法參數(shù)要求。

        簡單的說,一個類擁有其父類、和已實(shí)現(xiàn)接口的身份。

        通過實(shí)現(xiàn)接口實(shí)現(xiàn)多態(tài)(推薦學(xué)習(xí):PHP編程從入門到精通)

        <?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(); ?>

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

        通過組合模擬多重繼承。

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

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

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

        接口實(shí)例

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

        <?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è)計模式"); $user = new NormalUser("tom"); $price = Productsettle::finalPrice($user, $book, $number); $str = "您好,尊敬的" . $user->getName() . "<br />"; $str .= "您的級別是" . $user->getGrade() . "<br />"; $str .= "您的折扣是" . $user->getDiscount() . "<br />"; $str .= "您的價格是" . $price; echo $str; ?>

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 久久免费精品视频| 精品久久久无码中文字幕| 精品无码久久久久久国产| 国产精品无码一区二区三级 | 在线亚洲精品自拍| 亚洲成人精品久久| 国产成人久久精品区一区二区| 亚洲高清专区日韩精品 | 久久亚洲精精品中文字幕| 久久久久久久久久免免费精品| 99久久www免费人成精品| 国产福利91精品一区二区三区 | 国产精品夜色视频一级区 | 精品国精品国产自在久国产应用 | 欧美激情精品久久久久| 国产99视频精品免费专区| 蜜臀久久99精品久久久久久小说| 亚洲人午夜射精精品日韩| 精品久久久久久99人妻| 国产精品国产三级国产潘金莲 | 国产精品亚韩精品无码a在线| 香蕉久久夜色精品升级完成| 亚洲日韩国产精品乱| 亚洲精品天堂成人片?V在线播放| 欧美精品高清在线xxxx| 欧美日韩国产精品| 无码日韩精品一区二区人妻| 欧美成人精品一区二三区在线观看| 久热这里只有精品99国产6| 久久99精品久久久久久噜噜| 久久精品国产亚洲5555| 久久久无码精品午夜| 欧美日韩精品系列一区二区三区国产一区二区精品 | 国产91精品一区二区麻豆网站| 国产cosplay精品视频| 国产亚洲精品国产| 华人在线精品免费观看| 亚洲欧美日韩精品| 国产精品高清在线观看| 久久久久无码精品| 中国精品18videosex性中国|