夜间福利网站,免费动漫av,一级做a爰片久久毛片免费陪,夜夜骑首页,黄色毛片视频,插插插操操操,综合av色

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

時間:2025-10-21 17:15:05 php語言 我要投稿

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

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

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

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

  所有實現這個接口的類,都可以滿足以接口類型作為類型提示的方法參數要求。

  簡單的說,一個類擁有其父類、和已實現接口的身份。

  通過實現接口實現多態(tài)

  復制代碼 代碼如下:

  <?php

  interface User{ /pic/p>

  public function  getName();

  public function setName($_name);

  }

  class NormalUser implements User { /pic/p>

  private $name;

  public function getName(){

  return $this->name;

  }

  public function setName($_name){

  $this->name = $_name;

  }

  }

  class UserAdmin{ /pic/p>

  public static function  ChangeUserName(User $_user,$_userName){

  $_user->setName($_userName);

  }

  }

  $normalUser = new NormalUser();

  UserAdmin::ChangeUserName($normalUser,"Tom");/pic/p>

  echo $normalUser->getName();

  ?>

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

  通過組合模擬多重繼承。

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

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

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

  接口實例

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

  復制代碼 代碼如下:

  <?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("設計模式");

  $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;

  ?>

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

PHP中多態(tài)如何實現09-12

Java中的多態(tài)用法實例分析08-29

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

PHP5中的魔術方法詳解12-06

php兩種無限分類方法實例12-08

PHP5異常處理分析實例10-15

php中實現回刪功能實例01-26

兩種實現表單驗證的javascript方法12-15

HTML實現頁面自動跳轉的方法有哪些(實例)07-29

  • 相關推薦