今天就跟大家聊聊有關(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)
猜你還喜歡下面的內(nèi)容