国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php 類中多態的應用

2024-09-04 11:43:45
字體:
來源:轉載
供稿:網友

Instanceof:用來測定一個給定的對象是否來自指定的對象類,代碼如下:

  1. <?php 
  2.  
  3. class A{} 
  4.  
  5. class B{} 
  6.  
  7. $thing=new A(); 
  8.  
  9. //return true 
  10.  
  11. if ($thing instanceof A) { 
  12.  
  13.     echo 'A'
  14.  
  15.  
  16. //return false 
  17.  
  18. if ($thing instanceof B) { 
  19.  
  20.     echo 'B'
  21.  
  22.  
  23. ?> 
  24.  
  25. //運行結果: 
  26.  
  27. //A 
  28.  
  29. <?php 
  30.  
  31. header("Content-Type:text/html;charset=UTF-8"); 
  32. //開源代碼Vevb.com 
  33. interface MyUsb{ 
  34.  
  35.     function type(); 
  36.  
  37.     function alert(); 
  38.  
  39.  
  40. class Zip implements MyUsb{ 
  41.  
  42.     function type(){ 
  43.  
  44.        echo "2.0"
  45.  
  46.     } 
  47.  
  48.     function alert(){ 
  49.  
  50.        echo "正在檢查U盤驅動"
  51.  
  52.     } 
  53.  
  54.  
  55. class Mp3 implements MyUsb{ 
  56.  
  57.     function type(){ 
  58.  
  59.        echo "1.0"
  60.  
  61.     } 
  62.  
  63.     function alert(){ 
  64.  
  65.        echo "正在檢查Mp3驅動"
  66.  
  67.     } 
  68.  
  69.  
  70. class Mypc{ 
  71.  
  72.     function PcUsb($what
  73.  
  74.     { 
  75.  
  76.        $what->type(); 
  77.  
  78.        $what->alert(); 
  79.  
  80.     } 
  81.  
  82.  
  83. $pc=new Mypc(); 
  84.  
  85. $zip=new Zip(); 
  86.  
  87. $mp3=new Mp3(); 
  88.  
  89. $pc->PcUsb($zip);//當插上的是U盤的時候 
  90.  
  91. echo "<br/>"
  92.  
  93. $pc->PcUsb($mp3);//當插上的是MP3的時候 
  94.  
  95. ?> 
  96.  
  97. //運行結果: 
  98.  
  99. //2.0正在檢查U盤驅動 
  100. //1.0正在檢查Mp3驅動 

對象引用都是一樣的不分父類引用,還是子類引用,我們現在來看一個例子,首先還是要使用多態就要有父類對象和子類對象的關系,做一 個形狀的接口或是抽象類做為父類,里面有兩個抽象方法,一個求周長的方法,另一個是求 面積的方法,這接口的子類是多種不同的形狀,每個形狀又都有周長和面積,又因為父類是 一個接口,所以子類里面就必須要實現父類的這兩個周長和面積的抽象方法,這樣做的目的 是每種不同形狀的子類都遵守父類接口的規范,都要有求周長和求面積的方法,代碼如下:

  1. <?php 
  2. //定義了一個形狀的接口,里面有兩個抽象方法讓子類去實現  
  3. interface Shape{  
  4. function area();  
  5. function perimeter();  
  6. }  
  7. //定義了一個矩形子類實現了形狀接口中的周長和面積  
  8. class Rect implements Shape{  
  9. private $width;  
  10. private $height;  
  11. function __construct($width$height){  
  12. $this->width=$width;  
  13. $this->height=$height;  
  14. }  
  15. function area(){  
  16. return "矩形的面積是:".($this->width*$this->height);  
  17. }  
  18. function perimeter(){  
  19. return "矩形的周長是:".(2*($this->width+$this->height));  
  20. }  
  21. }  
  22. //定義了一個圓形子類實現了形狀接口中的周長和面積  
  23. class Circular implements Shape{  
  24. private $radius;  
  25. function __construct($radius){  
  26. $this->radius=$radius;  
  27. }  
  28. function area(){  
  29. return "圓形的面積是:".(3.14*$this->radius*$this->radius);  
  30. }  
  31. function perimeter(){  
  32. return "圓形的周長是:".(2*3.14*$this->radius);  
  33. }  
  34. }  
  35. //把子類矩形對象賦給形狀的一個引用  
  36. $shape=new Rect(5, 10);  
  37. echo $shape->area()."<br>";  
  38. echo $shape->perimeter()."<br>";  
  39. //把子類圓形對象賦給形狀的一個引用  
  40. $shape=new Circular(10);  
  41. echo $shape->area()."<br>";  
  42. echo $shape->perimeter()."<br>";  
  43. ?> 
  44. /* 
  45. 上例執行結果:  
  46. 執行結果  
  47. 矩形的面積是:50  
  48. 矩形的周長是:30  
  49. 圓形的面積是:314  
  50. 圓形的周長是:62.8 
  51. */ 

通過上例我們看到,把矩形對象和圓形對象分別賦給了變量$shape,調用$shape 引用中 的面積和周長的方法,出現了不同的結果,這就是一種多態的應用,其實在我們PHP 這種弱 類形的面向對象的語言里面,多態的特性并不是特別的明顯,其實就是對象類型變量的變項應用.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西吉县| 黔西县| 抚州市| 曲松县| 永年县| 衢州市| 鄂伦春自治旗| 宁远县| 天镇县| 南阳市| 南康市| 韶关市| 吉林市| 富裕县| 鹰潭市| 河间市| 伊宁县| 彭阳县| 巫溪县| 新晃| 高陵县| 西吉县| 芜湖县| 青河县| 即墨市| 龙陵县| 龙江县| 固安县| 寻甸| 泸溪县| 克拉玛依市| 邢台县| 阿克苏市| 洛川县| 红河县| 资阳市| 灯塔市| 越西县| 蒲江县| 霍州市| 桐乡市|