程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 正確理解PHP抽象類應用

正確理解PHP抽象類應用

編輯:關於PHP編程

對於

在自然語言中,我們理解抽象的概念是,一個物體的一種大的描述,這種描述對某類物體來說是共有的特性。那麼在PHP中也是一樣的,我們把一個類進行抽象,可以指明類的一般行為,這個類應該是一個模板,它指示它的子方法必須要實現的一些行為。

PHP抽象類應用的定義:

abstract class ClassName{

}

PHP抽象類應用要點:

1.定義一些方法,子類必須完全實現這個抽象中所有的方法
2.不能從抽象類創建對象,它的意義在於被擴展
3.抽象類通常具有抽象方法,方法中沒有大括號

PHP抽象類應用重點:

1.抽象方法不必實現具體的功能,由子類來完成
2.在子類實現抽象類的方法時,其子類的可見性必須大於或等於抽象方法的定義
3.抽象類的方法可以有參數,也可以為空
4.如果抽象方法有參數,那麼子類的實現也必須有相同的參數個數

PHP抽象類應用示例:

abstract public function_name(); //注意沒有大括號

作為演示,我們來實現一個簡單的抽象類:計算矩形的面積。這個矩形可以從形狀類擴展。

  1. < ?PHP   
  2. abstract class Shape {   
  3. abstract protected function get_area();   
  4. //和一般的方法不同的是,這個方法沒有大括號   
  5. //你不能創建這個抽象類的實例:$Shape_Rect
     = new Shape();   
  6. }   
  7. class Rectangle extends Shape{   
  8. private $width;   
  9. private $height;   
  10. function __construct($width=0,
    $height=0){   
  11. $this->width=$width;   
  12. $this->height=$height;   
  13. }   
  14. function get_area(){   
  15. echo ($this->width+$this->height)*2;   
  16. }   
  17. }   
  18. $Shape_Rect = new Rectangle(20,30);   
  19. $Shape_Rect->get_area();   
  20. ?>   
  21. < ?PHP  
  22. abstract class Shape {  
  23. abstract protected function get_area();  
  24. //和一般的方法不同的是,這個方法沒有大括號  
  25. //你不能創建這個抽象類的實例:$Shape_Rect 
    = new Shape();  
  26. }  
  27. class Rectangle extends Shape{  
  28. private $width;  
  29. private $height;  
  30. function __construct($width=0,$height=0){  
  31. $this->width=$width;  
  32. $this->height=$height;  
  33. }  
  34. function get_area(){  
  35. echo ($this->width+$this->height)*2;  
  36. }   
  37. }  
  38. $Shape_Rect = new Rectangle(20,30);  
  39. $Shape_Rect->get_area();  
  40. ?> 

這也算是一個簡單的例子,基本上可以說明PHP中抽象類的用法了,其他的不想多說了。個人覺得抽象類一般在大的項目才會用吧,因為我覺得它實在是要遵守的”規矩”太多了,用起來不方便!當然這只是我的意見。還想多說一些,PHP抽象類應用是單繼承的,也就是說你只能從一個類繼承,而不能一個類繼承了A類,又繼承B類,如果要實現這樣的功能,得使用接口相關的知識了,在此暫時不討論PHP接口的知識!一句話:單繼承多接口中!


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved