av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語言

PHP5中實(shí)現(xiàn)多態(tài)的兩種方法實(shí)例

時(shí)間:2025-05-08 02:55:27 php語言 我要投稿
  • 相關(guān)推薦

PHP5中實(shí)現(xiàn)多態(tài)的兩種方法實(shí)例

  在PHP5中,變量的類型是不確定的,一個(gè)變量可以指向任何類型的數(shù)值、字符串、對象、資源等。我們無法說PHP5中多態(tài)的是變量。以下是小編整理的關(guān)于在PHP5中多態(tài)應(yīng)用方法,歡迎來閱讀!

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

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

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

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

  通過實(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();

  ?>

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

  通過組合模擬多重繼承。

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

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

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

  接口實(shí)例

  寫一個(gè)概念性的例子。 我們設(shè)計(jì)一個(gè)在線銷售系統(tǒng),用戶部分設(shè)計(jì)如下: 將用戶分為,NormalUser, VipUser, InnerUser 三種。要求根據(jù)用戶的不同折扣計(jì)算用戶購買產(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 .= "您的級別是" . $user->getGrade() . "<br />";

  $str .= "您的折扣是" . $user->getDiscount() . "<br />";

  $str .= "您的價(jià)格是" . $price;

  echo $str;

  ?>

【PHP5中實(shí)現(xiàn)多態(tài)的兩種方法實(shí)例】相關(guān)文章:

PHP中多態(tài)如何實(shí)現(xiàn)05-06

Java中的多態(tài)用法實(shí)例分析04-04

php實(shí)現(xiàn)偽靜態(tài)的方法實(shí)例11-30

PHP5中的魔術(shù)方法詳解04-19

php兩種無限分類方法實(shí)例06-15

php中實(shí)現(xiàn)回刪功能實(shí)例01-26

PHP5異常處理分析實(shí)例08-07

兩種實(shí)現(xiàn)表單驗(yàn)證的javascript方法04-27

HTML實(shí)現(xiàn)頁面自動跳轉(zhuǎn)的方法有哪些(實(shí)例)07-31