激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

php面向對象全攻略:多態(tài)的應用

時(shí)間:2024-10-28 04:37:51 PHP 我要投稿
  • 相關(guān)推薦

php面向對象全攻略:多態(tài)的應用

  多態(tài)的應用

  多態(tài)是除封裝和繼承之外的另一個(gè)面向對象的三大特性之一,我個(gè)人看來(lái)PHP 中雖然可

  以實(shí)現多態(tài),但和C++還有Java 這些面向對象的語(yǔ)言相比,多態(tài)性并不是那么突出,因為PHP

  本身就是一種弱類(lèi)型的語(yǔ)言,不存在父類(lèi)對象轉化為子類(lèi)對象或者是子類(lèi)對象轉化為父類(lèi)對

  象的問(wèn)題,所以多態(tài)的應用并不是那么的明顯;所謂多態(tài)性是指一段程序能夠處理多種類(lèi)型

  對象的能力,比如說(shuō)在公司上班,每個(gè)月財務(wù)發(fā)放工資,同一個(gè)發(fā)工資的方法,在公司內不

  同的員工或是不同職位的員工,都是通過(guò)這個(gè)方法發(fā)放的,但是所發(fā)的工資都是不相同的。

  所以同一個(gè)發(fā)工資的方法就出現了多種形態(tài)。對于面向對象的程序來(lái)說(shuō),多態(tài)就是把子類(lèi)對

  象賦值給父類(lèi)引用,然后調用父類(lèi)的方法,去執行子類(lèi)覆蓋父類(lèi)的那個(gè)方法,但在PHP 里是

  弱類(lèi)型的,對象引用都是一樣的不分父類(lèi)引用,還是子類(lèi)引用。

  我們現在來(lái)看一個(gè)例子,首先還是要使用多態(tài)就要有父類(lèi)對象和子類(lèi)對象的關(guān)系。做一

  個(gè)形狀的接口或是抽象類(lèi)做為父類(lèi),里面有兩個(gè)抽象方法,一個(gè)求周長(cháng)的方法,另一個(gè)是求

  面積的方法;這接口的子類(lèi)是多種不同的形狀,每個(gè)形狀又都有周長(cháng)和面積,又因為父類(lèi)是

  一個(gè)接口,所以子類(lèi)里面就必須要實(shí)現父類(lèi)的這兩個(gè)周長(cháng)和面積的抽象方法,這樣做的目的

  是每種不同形狀的子類(lèi)都遵守父類(lèi)接口的規范,都要有求周長(cháng)和求面積的方法。

  代碼片段

  復制代碼 代碼如下:

  <?

  //定義了一個(gè)形狀的接口,里面有兩個(gè)抽象方法讓子類(lèi)去實(shí)現

  interface Shape{

  function area();

  function perimeter();

  }

  //定義了一個(gè)矩形子類(lèi)實(shí)現了形狀接口中的周長(cháng)和面積

  class Rect implements Shape{

  private $width;

  private $height;

  function __construct($width, $height){

  $this->width=$width;

  $this->height=$height;

  }

  function area(){

  return "矩形的面積是:".($this->width*$this->height);

  }

  function perimeter(){

  return "矩形的周長(cháng)是:".(2*($this->width+$this->height));

  }

  }

  //定義了一個(gè)圓形子類(lèi)實(shí)現了形狀接口中的周長(cháng)和面積

  class Circular implements Shape{

  private $radius;

  function __construct($radius){

  $this->radius=$radius;

  }

  function area(){

  return "圓形的面積是:".(3.14*$this->radius*$this->radius);

  }

  function perimeter(){

  return "圓形的周長(cháng)是:".(2*3.14*$this->radius);

  }

  }

  //把子類(lèi)矩形對象賦給形狀的一個(gè)引用

  $shape=new Rect(5, 10);

  echo $shape->area()."
";

  echo $shape->perimeter()."
";

  //把子類(lèi)圓形對象賦給形狀的一個(gè)引用

  $shape=new Circular(10);

  echo $shape->area()."
";

  echo $shape->perimeter()."
";

  ?>

  上例執行結果:

  執行結果

  矩形的面積是:50

  矩形的周長(cháng)是:30

  圓形的面積是:314

  圓形的周長(cháng)是:62.8

  通過(guò)上例我們看到,把矩形對象和圓形對象分別賦給了變量$shape,調用$shape 引用中

  的面積和周長(cháng)的方法,出現了不同的結果,這就是一種多態(tài)的應用,其實(shí)在我們PHP 這種弱

  類(lèi)形的面向對象的語(yǔ)言里面,多態(tài)的特性并不是特別的明顯,其實(shí)就是對象類(lèi)型變量的變項

  應用。

【php面向對象全攻略:多態(tài)的應用】相關(guān)文章:

PHP面向對象重載重寫(xiě)的不同10-25

javascript面向對象中的對象怎么理解09-02

PHP對象注入的實(shí)例分析08-27

關(guān)于PHP var-dump遍歷對象屬性的函數與應用代碼06-21

JAVA面向對象的三大特性06-14

 PHP的基礎編程與應用10-16

2016年java面向對象編程題庫及答案10-24

關(guān)于php堆排序實(shí)現原理與應用方法10-09

關(guān)于php面試寶典及PHP面試技巧08-16

PHP的壓縮函數06-21

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频